App only authentication と OAuth 2.0 ベアラートークン
- ユーザータイムラインの取得
- 任意のアカウントのフォロー中アカウントおよびフォロワーへのアクセス
- リストリソースへのアクセス
- ツイートの検索
- ツイートやその他のリソースの作成 (ポスト)
- ユーザーの検索
- 任意の Geo エンドポイントの利用
- ダイレクトメッセージまたはアカウント認証情報へのアクセス
- ユーザーのメールアドレスの取得
認証フロー
consumer key と consumer secret を POST oauth2/token エンドポイントに渡すことで、App only Access Token (ベアラートークン) を生成できます。
App only 認証フローは、次の手順で行われます。
- アプリケーションは、
consumer keyとconsumer secretを特別な形式でエンコードして、資格情報のセットを作成します。 - アプリケーションは、これらの資格情報と引き換えに POST oauth2/token エンドポイントにリクエストを送り、App only Access Token を取得します。
- REST API にアクセスする際、アプリケーションは App only Access Token を使用して認証を行います。

アプリケーション専用認証について
アプリケーション専用リクエストの送信
- RFC 1738 に従ってコンシューマーキーとコンシューマーシークレットを URL エンコードします。執筆時点では、この処理によってコンシューマーキーおよびシークレットは実際には変化しませんが、今後それらの値の形式が変更される可能性に備えて、この手順は必ず実行してください。
- エンコード済みのコンシューマーキー、コロン文字「:」、およびエンコード済みのコンシューマーシークレットを連結し、1 つの文字列にします。
- 前の手順で得た文字列をBase64 エンコードします。
| Consumer key | xvz1evFS4wEEPTGEFPHBog |
| Consumer secret | L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg |
| RFC 1738 encoded consumer key (does not change) | xvz1evFS4wEEPTGEFPHBog |
| RFC 1738 encoded consumer secret (does not change) | L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg |
| Bearer Token credentials | xvz1evFS4wEEPTGEFPHBog:L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg |
| Base64 encoded Bearer Token credentials | :: eHZ6MWV2RlM0d0VFUFRHRUZQSEJvZzpMOHFxOVBaeVJnNmllS0dFS2hab2xHQzB2SldMdzhpRUo4OERSZHlPZw== |
- リクエストは HTTP POST リクエストでなければなりません。
- リクエストには、値が
Basic <base64 encoded value from step 1>.のAuthorizationヘッダーを含める必要があります。 - リクエストには、値が
application/x-www-form-urlencoded;charset=UTF-8.のContent-Typeヘッダーを含める必要があります。 - リクエストボディは
grant_type=client_credentialsでなければなりません。
token_type キーに対応する値が bearer であることを確認する必要があります。access_token キーに対応する値が、App 専用アクセス トークン (ベアラートークン) です。
なお、1 つの App 専用アクセス トークンは、同時に 1 つのアプリケーションに対してのみ有効です。同じ認証情報で /oauth2/token に別のリクエストを送信した場合でも、そのトークンが無効化されるまでは同じトークンが返されます。
ステップ 3: App 専用アクセス トークン (ベアラートークン) で API リクエストを認証する
App 専用アクセス トークン (ベアラートークン) は、アプリケーションのみの認証をサポートする API エンドポイントへのリクエスト発行に使用できます。App 専用アクセス トークンを使用するには、通常の HTTPS リクエストを構築し、Authorization ヘッダーに Bearer <base64 bearer token value from step 2>. Signing is not required. という値を含めます。
リクエスト例 (Authorization ヘッダーは折り返して表示しています) :
一般的なエラーケース
- 無効なリクエスト (たとえば
grant_type=client_credentialsを省略するなど) で App only Access Token (ベアラートークン) を取得しようとする。 - 誤った、または有効期限切れのアプリケーション認証情報を使って App only Access Token (ベアラートークン) を取得または失効させようとする。
- 誤った、またはすでに失効済みの App only Access Token (ベアラートークン) を無効化しようとする。
- 短時間に高頻度で App only Access Token (ベアラートークン) を取得しようとする。
API リクエストに無効な App-only アクセストークン (ベアラートークン) が含まれている
App only 認証をサポートしていないエンドポイントで使用される App only Access Token (ベアラートークン)
statuses/home_timeline など) が必要なエンドポイントに対して、App only Access Token (ベアラートークン) を使ってリクエストすると、次のようなレスポンスが返されます。