1

我正在尝试获取亚马逊云驱动器的访问令牌。首先我请求这个网址:

https://www.amazon.com/ap/oa?client_id=MYCLIENTID&scope=clouddrive%3Aread_all%20clouddrive%3Awrite&response_type=code&redirect_uri=https://mymusic.az/signin

然后我点击继续。之后,我将重定向此 URL:

https://mymusic.az/signin?code=SOMECODE&scope=clouddrive%3Aread_all+clouddrive%3Awrite

我从 URL获得了一些代码。但它不是访问令牌吗?如何使用SOMECODE获取访问令牌?

4

2 回答 2

1

如果您阅读文档,那么发生的事情真的很明显。

有两种类型的授权,隐式授权返回将过期的授权令牌,授权代码授权返回不会过期的授权代码。您正在请求授权码,这就是您要返回的内容。然后,当您需要检索访问令牌时,您可以使用授权代码发出另一个请求。至少我建议阅读标题为“授权代码授予”的文档的整个部分。

于 2016-03-13T22:20:30.223 回答
1

获得 CODE 后,您需要索取令牌

发送 POST 到https://api.amazon.com/auth/o2/token ,内容类型为application/x-www-form-urlencoded

grant_type : set to 'authorization_code'.
code : Specifies the code returned after user authorization.
client_id : Specifies the identifier for the app. This is a body parameter.
client_secret : Specifies the secret identifier associated with the app.
redirect_uri : Specifies one of the return URIs that you added to your app when signing up.

它应该是 url 编码形式,而不是 JSON。即使说redirect_uri在这里没用,所有参数都是必需的,但它应该与用于代码的相同。

但作为回应,你会得到类似这样的 JSON

{
    "token_type": "bearer",
    "expires_in": 3600,
    "refresh_token": "Atzr|IQEBLzAtAhUAibmh-1N0EVztZJofMx",
    "access_token": "Atza|IQEBLjAsAhQ3yD47Jkj09BfU_qgNk4"
}
于 2016-03-14T08:53:35.487 回答