ユーザーコードと検証用URLを取得する
ユーザーコードと検証用URLを取得する
ユーザーコードと検証用URLを取得するには、対象のデバイスがLogin with Amazonに対してPOSTリクエストを実行する必要があります。デバイス認可リクエストが有効な場合、ユーザーに表示するuser_codeとverification_urlが含まれるデバイス認可レスポンスを受け取ります。
ヒント: デバイスに [Login with Amazon] ボタンを追加し、ユーザーがそのボタンを選択したときにデバイス認可リクエストを実行することをお勧めします。[Login with Amazon] ボタンの各種スタイルは、こちらで確認できます。(画面が小さいなどの理由で)ボタンがデバイスに適していない場合は、ユーザーが特定のメニューオプションやハイパーリンクを選択したときにデバイス認可リクエストを実行できます。
デバイス認可レスポンスおよびリクエストでは、OAuth 2.0 Device Flow仕様のセクション3.1と3.2を実装しています。
デバイス認可リクエスト
認可をリクエストするには、デバイスは次のパラメーターで、https://api.amazon.com/auth/o2/create/codepairに対して安全なHTTP POSTリクエストを実行する必要があります。
パラメーター | 説明 |
---|---|
response_type | 必須。リクエストされたレスポンスのタイプ。コードベースのリンクの認可リクエストを進めるには、device_codeである必要があります。 |
client_id | 必須。クライアント識別子。この値は、Android用またはiOS用のLogin with Amazon SDKを使用して取得されます。 |
scope | 必須。リクエストの範囲。profile、profile:user_id、postal_code、またはスペースで区切られた組み合わせ(例:profile%20postal_code)である必要があります。 |
次に例を示します。
POST /auth/o2/create/codepair HTTP/1.1
Host: api.amazon.com
Content-Type: application/x-www-form-urlencoded
response_type=device_code&client_id=amzn1.application-oa2-client.5e0256cabe&scope=profile
デバイス認可レスポンス
デバイス認可リクエストの形式が適切であった場合、Login with Amazonから次のパラメーターを含むデバイス認可レスポンスを受け取ります。
パラメーター | 説明 |
---|---|
user_code | 文字列。ユーザーに表示するコード。 |
device_code | 文字列。Login with Amazonにデバイストークンリクエストを送信し、ユーザーのアクセストークンとリフレッシュトークンを取得するために必要です。 |
verification_uri | 文字列。ユーザーに表示するURL。 |
expires_in | 整数。device_codeが有効になる時間(秒数)。 |
interval | 整数。デバイストークンリクエスト間で待機する時間(秒数)。 |
次に例を示します。
HTTP/1.1 200 OK
Content-Type: application/json
{
"device_code": "74tq5miHKB",
"user_code": "94238",
"verification_uri": "http://www.example.com/device",
"expires_in": 600,
"interval": 30
}
認可エラー
認可リクエストの形式が正しくない場合やエラーが発生した場合は、デバイス認可レスポンスが次のいずれかを返します。
エラーコード | 説明 |
---|---|
invalid_request |
リクエストに必須パラメーターがない、値が無効、または形式に誤りがあります。 |
unauthorized_client |
認可コードをリクエストする権限がクライアントにありません。 |
access_denied |
リソース所有者または認可サーバーがこのリクエストを拒否しました。 |
unsupported_response_type |
リクエストが指定したレスポンスタイプはサポートされていません。このシナリオでは、response_type はcode である必要があります。 |
invalid_scope |
クライアントがリクエストしたスコープに誤りがあります。 |
server_error |
認可サーバーで想定外のエラーが発生しました(HTTP500内部サーバーエラーとして処理)。 |
temporarily_unavailable |
認可サーバーは、一時的なオーバーロードまたは予定されていたメンテナンスのために使用できません(HTTPエラー503サービス利用不可として処理)。 |