检索用户代码和验证URL

检索用户代码和验证URL

要检索用户代码和验证URL,您的设备必须向Login with Amazon作出POST请求。如果设备授权请求有效,您将会收到包含user_code和verification_url的设备授权响应,这些信息也会向用户显示。

设备授权响应和请求按照OAuth 2.0设备流程规范的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_type必须为code
invalid_scope 客户端请求范围错误。
server_error 授权服务器发生意外错误(将其视为500内部服务器HTTP错误)。
temporarily_unavailable 授权服务器因暂时过载或计划维护而导致当前不可用(将其视为503服务不可用HTTP错误)。