OAuth 1.0a

Twitter開発者プラットフォーム上の多くのエンドポイントでは、Twitterアカウントの代わりを務めたり、APIリクエストを行ったりする際に、OAuth 1.0aメソッドを使用しています。たとえば、Twitter開発者アプリがある場合、該当するユーザーがアプリを認証すれば、任意のTwitterアカウントに代わってAPIリクエストをすることができます。

注: HMAC-SHA1やパーセントエンコードなどの概念に詳しくない場合は、下記に記載する認証プロセスを大幅に簡素化するいくつかのAPIクライアントをリストする、「便利なツール」セクションをご覧いただくことをお勧めします。

 

主な概念

キーとトークンを使ったリクエストへの署名

 

生成されたいくつかのキーとトークンを認証ヘッダーで渡して、各APIリクエストに署名する必要があります。最初に、Twitter開発者アプリの詳細ページで、以下のようないくつかのキーとトークンを生成することができます。

APIキーとシークレット:

oauth_consumer_key

oauth_consumer_secret

これらは、APIリクエストをする際のTwitter開発者アプリを表すユーザー名とパスワードと考えてください。 

アクセストークンとシークレット:

oauth_token

oauth_token_secret

アクセストークンとアクセストークンシークレットは、OAuth 1.0a APIリクエストを認証するために使用されるユーザー固有の認証情報です。リクエストを代行するTwitterアカウントを指定します。

開発者アカウントに関連付けられた同じTwitterアカウントに代わって、Twitter開発者アプリの詳細ページでアプリでリクエストをする場合は、独自のアクセストークンとトークンシークレットを生成できます。

別のユーザーのアクセストークンを生成する場合は、下の「ユーザーに代わるリクエストの実行」を参照してください。

ユーザーに代わるリクエストの実行

 

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

アプリの詳細ページからTwitter開発者アプリを所有しているTwitterアカウントを表すアクセストークンのセットを生成できますが、別のTwitterアカウントに代わってリクエストをする場合は、そのアカウントの所有者が3レッグ認証OAuthフローの一環でそのアカウントにサインインしてアクセスを許可する必要があります。このプロセスでは、OAuth 1.0aリクエストに使用できるアクセストークン(oauth_tokenとoauth_token_secret)のセットが出力されます。

これらのキーとトークンが取得できたら、署名を一から作成できます。作業の内容を明確に理解していない場合や、OAuth 1.0aを必要とするエンドポイントへのリクエストに以下のツールのいずれかを使用している場合、これはお勧めしません。

参考までに、生成されたすべてのトークンが認可ヘッダーで渡される署名付きcURLリクエストの例を以下に示します。

      curl --request POST \

  --url 'https://api.twitter.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"' \
    

 

ユーザーアクセストークンは秘密性が高く、非常に慎重に保護する必要があります。アクセストークンが生成されると、そのアクセストークンが表すユーザーは、それらの保護をアプリケーションに任せることになります。APIキーとユーザーアクセストークンの両方のセキュリティが侵害されると、アプリケーションから個人情報やアカウント機能へのアクセス権が漏えいする可能性があります。キーとアクセストークンの保護の詳細を是非ご確認ください。

便利なツール

リクエストへの署名は複雑なプロセスです。大量の認証トークンを自動生成する、次のAPIクライアントライブラリの利用をお勧めします。

Postman

REST APIリクエストを構築して送信できるAPIクライアントです。 このツールの詳細については、チュートリアル「Postmanの概要」をご覧ください。 

Insomnia

Insomniaは、Cookie管理、環境変数、コード生成、認証機能を備えたREST APIクライアントです。Mac、Windows、Linuxで利用できます。