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

# OAuth 1.0a

> X における OAuth 1.0a ユーザーコンテキスト認証の概要。API キー、アクセストークン、リクエスト署名、認可された API 呼び出しを行うためのツールについて解説します。

export const Button = ({href, children}) => {
  return <div className="not-prose">
    <a href={href}>
      <button className="x-btn">
        <span>{children}</span>
        <svg width="3" height="24" viewBox="0 -9 3 24" class="h-6 rotate-0 overflow-visible"><path d="M0 0L3 3L0 6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg>
      </button>
    </a>
  </div>;
};

## OAuth 1.0a

X デベロッパープラットフォームの多くのエンドポイントでは、X アカウントに代わって操作(API リクエスト)を行うために OAuth 1.0a 方式を使用します。たとえば、X デベロッパーアプリをお持ちの場合、ユーザーがそのアプリを認証する限り、任意の X アカウントに代わって API リクエストを行うことができます。

ご注意: HMAC-SHA1 やパーセントエンコーディングといった概念になじみがない場合は、認証プロセスを大幅に簡素化してくれる API クライアントを紹介している、下記の「便利なツール」セクションをご確認いただくことをおすすめします。

### 主な概念

#### キーとトークンによるリクエストの署名

各 API リクエストには、生成した複数のキーとトークンを authorization ヘッダーで渡して署名する必要があります。まず、[X デベロッパーアプリ](/resources/fundamentals/developer-apps)の詳細ページで、以下を含むいくつかのキーとトークンを生成できます。

|                                                                                      |                                                                                                                                                                                                                                                                                                                                              |
| :----------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| API key と secret:<br /><br />`oauth_consumer_key`<br /><br />`oauth_consumer_secret` | API リクエストを行う際に X デベロッパーアプリを表す、ユーザー名とパスワードのようなものと考えてください。                                                                                                                                                                                                                                                                                     |
| Access token と secret:<br /><br />`oauth_token`<br /><br />`oauth_token_secret`      | アクセストークンとアクセストークンシークレットは、OAuth 1.0a API リクエストの認証に使用されるユーザー固有の資格情報です。リクエストがどの X アカウントに代わって行われるかを示します。<br /><br />アプリが、デベロッパーアカウントに関連付けられている同じ X アカウントに代わってリクエストを行うようにしたい場合は、[X デベロッパーアプリ](/resources/fundamentals/developer-apps)の詳細ページから独自のアクセストークンとトークンシークレットを生成できます。<br /><br />別のユーザー用にアクセストークンを生成したい場合は、下記の「ユーザーに代わってリクエストを行う」を参照してください。 |

#### ユーザーに代わってリクエストを行う

署名を作成する際には、リクエストを行う対象となるユーザーを表すアクセストークンのセットが必要です。

X デベロッパーアプリを所有する X アカウントを表すアクセストークンのセットは、[アプリの詳細ページ](https://developer.x.com/content/developer-twitter/en/apps)から生成できます。ただし、別の X アカウントに代わってリクエストを行いたい場合は、そのアカウントの所有者が [3-legged OAuth フロー](/resources/fundamentals/authentication#obtaining-access-tokens-using-3-legged-oauth-flow)の一環として自分のアカウントでサインインし、アクセスを許可する必要があります。このプロセスの出力として得られるアクセストークンのセット(oauth\_token と oauth\_token\_secret)を用いて、OAuth 1.0a リクエストを行えます。

これらのキーとトークンが揃ったら、ゼロから[署名を作成する](/resources/fundamentals/authentication#creating-a-signature)ことができます。自分で行うのは十分に理解している場合を除いておすすめしません。OAuth 1.0a が必要なエンドポイントへのリクエストを行うには、下記のツールのいずれかを使用することをおすすめします。

参考として、生成したすべてのトークンを authorization ヘッダーで渡した cURL リクエストの署名例を以下に示します。

```bash theme={null}
curl --request POST \
  --url 'https://api.x.com/1.1/statuses/update.json?status=Hello%20world' \
  --header 'authorization: OAuth oauth_consumer_key="CONSUMER_API_KEY", oauth_nonce="OAUTH_NONCE", oauth_signature="OAUTH_SIGNATURE", oauth_signature_method="HMAC-SHA1", oauth_timestamp="OAUTH_TIMESTAMP", oauth_token="ACCESS_TOKEN", oauth_version="1.0"' \
```

<Note>
  **注意:** ユーザーアクセストークンは機密情報であり、厳重に保護する必要があります。アクセストークンが生成されると、それが表すユーザーはあなたのアプリケーションがそれらを安全に保管することを信頼していることになります。API キーおよびユーザーアクセストークンの両方のセキュリティが侵害された場合、アプリケーションが個人情報やアカウント機能へのアクセスを公開してしまう可能性があります。[キーおよびアクセストークンの安全な管理](/resources/fundamentals/developer-apps)について詳しく学ぶことをおすすめします。
</Note>

### 便利なツール

[リクエストへの署名](/resources/fundamentals/authentication#creating-a-signature)プロセスは複雑です。認証トークンの多くを自動生成してくれる API クライアントライブラリの利用をおすすめします。

|                                        |                                                                                                                           |
| :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------ |
| [Postman](https://www.getpostman.com/) | REST API リクエストを構築および送信できる API クライアントです。このツールの詳細については、「[Postman ではじめる](/tutorials/postman-getting-started)」チュートリアルをご覧ください。 |
| [Insomnia](https://insomnia.rest/)     | Insomnia は、Mac、Window、Linux 向けの REST API クライアントで、Cookie 管理、環境変数、コード生成、認証機能を備えています。                                        |
