检索用户代码和验证URL
检索用户代码和验证URL
要检索用户代码和验证URL,您的设备必须向Login with Amazon作出POST请求。如果设备授权请求有效,您将会收到包含user_code和verification_url的设备授权响应,这些信息也会向用户显示。
提示: 我们建议您为设备添加Login with Amazon按钮,并在用户选择按钮后执行设备授权请求。您可以在此处获取不同风格的Login with Amazon按钮。如果对于您的设备来说,按钮不是最佳选择(例如,屏幕尺寸较小),您可以在用户选择特定菜单项或超链接时执行请求。
设备授权响应和请求按照OAuth 2.0设备流程规范的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 |
授权服务器发生意外错误(将其视为500内部服务器HTTP错误)。 |
temporarily_unavailable |
授权服务器因暂时过载或计划维护而导致当前不可用(将其视为503服务不可用HTTP错误)。 |