ユーザーコードと検証用URLを取得する


ユーザーコードと検証用URLを取得する

ユーザーコードと検証用URLを取得するには、対象のデバイスがLogin with Amazonに対してPOSTリクエストを実行する必要があります。デバイス認可リクエストが有効な場合、ユーザーに表示するuser_codeとverification_urlが含まれるデバイス認可レスポンスを受け取ります。

デバイス認可レスポンスおよびリクエストでは、OAuth 2.0 Device Flow仕様のセクション3.13.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_typecodeである必要があります。
invalid_scope クライアントがリクエストしたスコープに誤りがあります。
server_error 認可サーバーで想定外のエラーが発生しました(HTTP500内部サーバーエラーとして処理)。
temporarily_unavailable 認可サーバーは、一時的なオーバーロードまたは予定されていたメンテナンスのために使用できません(HTTPエラー503サービス利用不可として処理)。