> ## Documentation Index
> Fetch the complete documentation index at: https://x-preview-mintlify-d5730eee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# アプリ

> X デベロッパーアプリを作成・設定して、API 認証情報の取得、OAuth 1.0a および OAuth 2.0 の権限設定、コールバック URL の管理、キーのローテーションを行います。

アプリは API 認証情報のコンテナです。各アプリは独自のキー、トークン、および設定を持ちます。

***

## アプリの認証情報

アプリを作成すると、これらの認証情報を生成できます:

| 認証情報                      | ユースケース                                         |
| :------------------------ | :--------------------------------------------- |
| **API Key & Secret**      | OAuth 1.0a で認証します。リクエストへの署名やユーザートークンの生成に使用します。 |
| **Access Token & Secret** | 自分のアカウントに代わってリクエストを行います (OAuth 1.0a)。          |
| **Client ID & Secret**    | OAuth 2.0 で認証します。Authorization Code フローに使用します。 |
| **Bearer Token**          | 公開データエンドポイント用のアプリのみの認証。                        |

<Tip>
  新しいプロジェクトには **OAuth 2.0** を選択してください。きめ細かなスコープを提供し、X API v2 のユーザーコンテキストエンドポイントに必須です。
</Tip>

***

## アプリの作成

<Steps>
  <Step title="Developer Console を開く">
    [console.x.com](https://console.x.com) にアクセスしてサインインします。
  </Step>

  <Step title="Create App をクリック">
    アプリの名前、説明、ユースケースを入力します。
  </Step>

  <Step title="認証情報を生成">
    作成後、必要なキーとトークンを生成します。
  </Step>

  <Step title="安全に保存">
    認証情報をすぐに保存してください — 一度しか表示されません。
  </Step>
</Steps>

***

## アプリの権限 (OAuth 1.0a)

OAuth 1.0a アプリには 3 つの権限レベルがあります:

<Tabs>
  <Tab title="読み取り専用">
    * 投稿、ユーザー、および公開データを表示
    * 投稿、いいね、または何も変更できません
    * ダイレクトメッセージにはアクセスできません
  </Tab>

  <Tab title="読み取りと書き込み">
    * すべての読み取り権限
    * 投稿の作成と削除
    * ユーザーのフォロー/フォロー解除
    * いいねとリポスト
    * ダイレクトメッセージにはアクセスできません
  </Tab>

  <Tab title="読み取り、書き込み、DM">
    * すべての読み取りおよび書き込み権限
    * ダイレクトメッセージの送受信
  </Tab>
</Tabs>

<Note>
  権限の変更には、ユーザーが新しいスコープで新しいトークンを取得するためにアプリを再認可する必要があります。
</Note>

***

## OAuth 2.0 アプリのタイプ

OAuth 2.0 を設定する際は、アプリのタイプを選択してください:

| タイプ                     | クライアント       | ユースケース                         |
| :---------------------- | :----------- | :----------------------------- |
| **Web App**             | Confidential | シークレットを安全に保存できるサーバーサイドアプリケーション |
| **Automated App / Bot** | Confidential | サーバー上で動作するボットや自動化サービス          |
| **Native App**          | Public       | シークレットを保護できないモバイルまたはデスクトップアプリ  |
| **Single Page App**     | Public       | ブラウザベースの JavaScript アプリ        |

**Confidential クライアント** は Client Secret を受け取ります。**Public クライアント** は PKCE のみを使用します。

***

## コールバック URL

コールバック URL (リダイレクト URI) は OAuth フローに必要です。ユーザーがアプリを認可した後、認可コードと共にコールバック URL にリダイレクトされます。

### 要件

* Developer Console でアプリの許可リストにコールバック URL を追加
* URL は正確に一致する必要があります (末尾のスラッシュを含む)
* アプリあたり最大 **10 個のコールバック URL**
* 本番環境では `https://` を使用
* ローカル開発では `http://127.0.0.1` を使用 (`localhost` ではない)

### 禁止されているプロトコル

これらのプロトコルは使用できません: `javascript`、`data`、`file`、`ftp`、`mailto`、`telnet`、その他の非標準スキーム。

<Accordion title="禁止されているプロトコルの完全なリスト">
  `vbscript`、`javascript`、`vbs`、`data`、`mocha`、`keyword`、`livescript`、`ftp`、`file`、`gopher`、`acrobat`、`callto`、`daap`、`itpc`、`itms`、`firefoxurl`、`hcp`、`ldap`、`mailto`、`mmst`、`mmsu`、`msbd`、`rtsp`、`mso-offdap`、`snews`、`news`、`nntp`、`outlook`、`stssync`、`rlogin`、`telnet`、`tn3270`、`shell`、`sip`
</Accordion>

***

## ベストプラクティス

<CardGroup cols={2}>
  <Card title="アプリを分離する" icon="layer-group">
    開発、ステージング、本番用に異なるアプリを作成します。
  </Card>

  <Card title="認証情報のローテーション" icon="arrows-rotate">
    定期的に、また漏洩が疑われる場合はキーを再生成します。
  </Card>

  <Card title="最小限の権限" icon="shield-check">
    アプリが実際に必要とする権限のみをリクエストします。
  </Card>

  <Card title="使用状況のモニタリング" icon="chart-simple">
    API 使用状況を追跡するために、定期的に Developer Console を確認します。
  </Card>
</CardGroup>

***

## 自動アカウントのラベル

アプリがボットアカウントを運用している場合、自動として識別できます:

1. ボットアカウントの **設定** に移動
2. **アカウント** → **自動化** を選択
3. 管理アカウントをリンク

これにより、ユーザーとの信頼を築き、ボットをスパムから区別します。

***

## トラブルシューティング

<Accordion title="Callback URL not approved エラー">
  コールバック URL が Developer Console に登録されているとおりに、プロトコルおよび末尾のスラッシュを含めて正確であることを確認してください。クエリパラメータとして渡す際は URL を HTTP エンコードしてください。

  ```json theme={null}
  {
    "errors": [{
      "code": 415,
      "message": "Callback URL not approved for this client application."
    }]
  }
  ```
</Accordion>

<Accordion title="アプリが停止された">
  アプリが停止されたと表示された場合は、X プラットフォームチームからの通知がないかメールを確認してください。申し立てには [Platform Help Form](https://help.x.com/forms/platform) を使用してください。
</Accordion>
