Skip to main content

PKCE を使用した OAuth 2.0 Authorization Code Flow

はじめに

OAuth 2.0 は業界標準の認可プロトコルで、アプリケーションのスコープに対する制御を強化し、複数のデバイス間での認可フローを可能にします。OAuth 2.0 では、ユーザーに代わって特定の権限を付与する、きめ細かなスコープを選択できます。 アプリで OAuth 2.0 を有効にするには、Developer Console のアプリ設定セクションにあるアプリの認証設定で有効化する必要があります。

認証情報はどのくらいの期間有効ですか?

デフォルトでは、Authorization Code Flow with PKCE で作成する access token は、offline.access スコープを使用していない限り 2 時間しか有効ではありません。

リフレッシュトークン

リフレッシュトークンを使用すると、アプリケーションはリフレッシュトークンフローを介して、ユーザーに再度促すことなく新しい access token を取得できます。 offline.access スコープが適用されると、OAuth 2.0 リフレッシュトークンが発行されます。このリフレッシュトークンを使って、access token を取得します。このスコープを渡さない場合、リフレッシュトークンは生成されません。 リフレッシュトークンを使って新しい access token を取得するリクエストの例は次のとおりです:

アプリの設定

アプリの認証設定は OAuth 1.0a または OAuth 2.0 を選択できます。また、アプリで OAuth 1.0a と OAuth 2.0 の両方を有効にすることもできます。 OAuth 2.0 は X API v2 でのみ使用できます。OAuth 2.0 を選択した場合、アプリの Keys and Tokens セクションで Client ID を確認できます。

Confidential clients

Confidential clients は、認証情報を認可されていない当事者に公開することなく、安全に保持できるクライアントです。認可サーバーと安全に認証し、client secret を保護します。Public clients は通常、ブラウザーやモバイルデバイスで実行されるため、client secret を使用できません。confidential client 型のアプリを選択すると、client secret が発行されます。 Developer Console で confidential client 型のクライアントを選択した場合、Client Secret も確認できます。選択肢は Native App、Single page App、Web App、Automated App、または bot です。Native App と Single page App は public clients、Web App と Automated App/bots は confidential clients です。 有効な Authorization ヘッダーがある confidential client には client id は不要です。public client でのリクエストでは、依然として本文に Client Id を含める必要があります。

スコープ

スコープを使用すると、アプリに必要な権限のみが付与されるように、アプリのアクセスをきめ細かく設定できます。どのスコープがどのエンドポイントに対応するかについて詳しくは、authentication mapping ガイド を参照してください。

レート制限

ほとんどの場合、レート制限は OAuth 1.0a で認証する場合と同じですが、Tweets lookup と Users lookup は例外です。OAuth 2.0 を使用した Tweet lookup と user lookup では、アプリごとの上限を 15 分あたり 300 リクエストから 900 リクエストに引き上げています。詳しくは レート制限のドキュメント をご確認ください。

grant types

今回の初期リリースでは、サポートする grant types として authorization code with PKCErefresh token のみを提供しています。将来的にはさらに多くの grant types を提供する可能性があります。

OAuth 2.0 フロー

OAuth 2.0 は現在 OAuth 1.0a で使用しているものと類似したフローを使用します。図と詳細な説明は、こちらのドキュメント を参照してください。

用語集

パラメーター

OAuth 2.0 authorize URL を構築するには、認可 URL に以下のパラメーターを含める必要があります。

Authorize URL

OAuth 2.0 では、authorize URL を作成することで、X の「サインイン」と同様の認証フローでユーザーに認証を許可できます。 作成する URL の例は次のとおりです:
この URL を機能させるには適切なエンコーディングが必要です。percent encoding のドキュメントも合わせてご覧ください。