3.4. Device Access Token Request (デバイスアクセストークンリクエスト)
ユーザーに指示を表示した後、クライアントはアクセストークンリクエストを作成し、"grant_type" が "urn:ietf:params:oauth:grant-type:device_code" のトークンエンドポイント([RFC6749] のセクション 3.2 で定義)に送信します。これは、この仕様によって作成された拡張グラントタイプ([RFC6749] のセクション 4.5 で定義)であり、次のパラメータがあります:
grant_type (グラントタイプ)
- 必須 (REQUIRED)。値は "urn:ietf:params:oauth:grant-type:device_code" に設定しなければなりません (MUST)。
device_code (デバイスコード)
- 必須 (REQUIRED)。セクション 3.2 で定義されたデバイス認可応答からのデバイス検証コード "device_code"。
client_id (クライアント識別子)
- [RFC6749] のセクション 3.2.1 で説明されているように、クライアントが認可サーバーで認証していない場合は必須 (REQUIRED)。[RFC6749] のセクション 2.2 で説明されているクライアント識別子。
例えば、クライアントは次の HTTPS リクエストを行います(改行は表示目的のみ):
POST /token HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded
grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code
&device_code=GmRhmhcxhwAzkoEqiMEg_DnyEysNkuNhszIySk9eS
&client_id=1406020730
クライアントにクライアント資格情報が発行された(または他の認証要件が割り当てられた)場合、クライアントは [RFC6749] のセクション 3.2.1 で説明されているように認可サーバーで認証しなければなりません (MUST)。静的に配布されるクライアント資格情報にはセキュリティ上の影響があることに注意してください。セクション 5.6 を参照してください。
このリクエストへの応答はセクション 3.5 で定義されています。他の OAuth グラントタイプとは異なり、クライアントは応答内のエラーコードに基づいてポーリング方式でアクセストークンリクエストを繰り返し試行することが期待されます。