开发者控制台

API身份验证


API身份验证

使用应用提交API前需要配置对它的访问权限。请按照以下步骤操作:

  1. 使用亚马逊应用商店开发者控制台,创建安全配置文件。
  2. 在“API访问”页面中,将新的安全配置文件与应用提交API关联。
  3. 使用“用亚马逊帐户登录”API请求访问令牌。将令牌添加到每个API请求中的HTTP标头。

创建安全配置文件

要使用应用提交API,需要创建安全配置文件,然后为该安全配置文件请求API的访问权限。安全配置文件是用来为API访问生成访问令牌的机制。

要创建安全配置文件,请按照以下步骤操作:

  1. 登录亚马逊开发者控制台账户。如果您还没有账户,系统将提示您创建账户。
  2. 在主导航中,单击应用与服务
  3. 单击子菜单中的API访问
  4. 单击API的名称。

    “API访问”页面

  5. 单击创建新的安全配置文件按钮。
  6. 为新的配置文件输入“安全配置文件名称”和“安全配置文件描述”,然后单击保存
  7. 保存客户端ID和客户端密钥(在Web设置选项卡中),因为访问API时需要这些信息。
    客户端ID和客户端密钥

将安全配置文件与API关联

在“API访问”页面中,将新的安全配置文件与应用提交API关联。

  1. 导航到API 访问页面。
  2. 单击API名称,展开面板。
  3. 从下拉列表中选择新的安全配置文件。
  4. 选择附加以将安全配置文件与此API关联。API名称和附加的安全配置文件将添加到Security Profile(s) in use(使用中的安全配置文件)面板。
    客户端ID和客户端密钥

现在可以使用客户端ID和客户端密钥请求Login With Amazon (LWA)访问令牌。

请求LWA访问令牌

借助客户端ID和客户端密钥,按照以下步骤使用Login With Amazon API请求Login with Amazon访问令牌:

1.发送令牌请求

将POST请求发送到https://api.amazon.com/auth/o2/token,其中包含以下标头和内容:

  • 标头Content-Type: application/x-www-form-urlencoded
  • 内容
    • client_id: 在创建安全配置文件的步骤7中保存的客户端ID。
    • client_secret: 在创建安全配置文件的步骤7中保存的客户端密钥。
    • grant_type: 设置为client_credentials
    • scope: 将值设置为appstore::apps:readwrite

示例JSON内容:

{
    "grant_type": "client_credentials",
    "client_id": "amzn1.application-oa2-client.ae941846cdd745e9a53319f7bb98d435",
    "client_secret": "41d135b2b02ce5f2fbf7643a66477c089fcc1d88d11f69d3e4a6285b917ca35d",    
    "scope": "appstore::apps:readwrite"
}

示例cURL请求:

curl -k -X POST -H 'Content-Type: application/x-www-form-urlencoded' -d 'grant_type=client_credentials&client_id=amzn1.application-oa2-client.5c1462ee102c4a57a5224d0c72118741&client_secret=15d1829ddf4f12d1c5d425e57e5ca081d0f7a63bd94c9e142ff8b20d9de880a4&scope=appstore::apps:readwrite' https://api.amazon.com/auth/O2/token

2.保存响应

响应如下所示:

{"access_token":"Atc|MAEBIBav2tvCbJOA9Jv5sRpej6xY_qzHFuCpbWT-Z94nRqVWVcfmZVNPEhZiet-H3vdQcORqE5pO4fCKEi6kfvzzPtxHIoPIte-ZbKB1XgfjfJnciJHqnbV1UF4WJ_an1g9y7yvWKWJddQ2NLPO-C-Y71BPxJ0KDWOPonn_2qFLY5OJo3BhHKIwNHteQAwkCA9iko8d5tosS7fo3dvS-PFmiBk3OMUmr1AdYtuOnq1RVrX7-C14oWzfACudykTn5cDb48Qy2k6R70__GzHG3fC_-Rfzt7zwhfdBWpwoQk-GbV4Bes457oZwHz89Tj-AAf3DouYQ","scope":"appstore::apps:readwrite","token_type":"bearer","expires_in":3600}
  • access_token 访问令牌。
  • expires_in: 访问令牌到期之前的秒数。
  • scope: 将为appstore::apps:readwrite
  • token_type: 将始终为bearer

3.处理任何错误响应

如果令牌请求导致了错误,则响应消息正文包含以下错误消息之一:

错误消息正文 详情
{"error_description":"Client authentication failed","error":"invalid_client"} 密钥无效
{"error_description":"The request has an invalid parameter : scope","error":"invalid_scope"} 范围值无效
{"error_description":"The authorization grant type is not supported by the authorization server","error":"unsupported_grant_type"} 授权类型不正确
{"error_description":"The Content-Type is not supported by the authorization server","error":"invalid_request"} content-type不受支持

如何使用访问令牌

保存访问令牌,即请求LWA访问令牌响应中的access_token字段。

向应用提交API发送请求时,请将Authorization标头的值设置为Bearer <YOUR_ACCESS_TOKEN>。访问令牌是以“Atc|”开头的长字符串。

示例cURL请求:

curl -v -k -X GET "<endpoint URL>"   -H  "Authorization: Bearer Atc|MAEBIKfsULrH7jSzvJTV8UmiHWr9M86O3JRmv4t1hqoCBriSMEP5Gsey_FiBxteZ8oxGd6abGuOFga8fwnMhmSD_Sg4MI4odXLPgB2IVs8M1uswjuWjnsMcvehpWvf9tzQT8HTWiBigInJLB8BrMg5J3O02hlTvcF441XxXDXthyj993COJ2u5swOTKjC_dcijiN8amuzrj32rh9Fr3CNgCpoZ0WqXnBhoHUVMYSOBV-owA5rI4-OfysXC71Zbtv1hb8igk"  

访问令牌到期后,请按照请求LWA访问令牌中的步骤获取新访问令牌,并开始在您的请求中使用新访问令牌。如果自上次请求访问令牌以来已超过一小时,并且开始收到“403 Forbidden HTTP”错误以及消息“Request is not authorized”(请求未获得授权),则可以确定访问令牌已到期。