我正在编写 SmartHome 技能,需要一个访问令牌来发布设备(门铃)的异步通知。该文档令人困惑-但根据我的推断-我应该从Alexa控制台获取我的client_id和client_secret,并在初始技能连接/授权期间获取承载令牌,然后通过请求访问令牌(和刷新令牌)认证。所以我可以得到这三条信息,但是我尝试这样做:
curl -vv X POST -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' -d "\
grant_type=authorization_code\
&code=$CODE\
&client_id=$CLIENT_ID\
&client_secret=$CLIENT_SECRET" \
https://api.amazon.com/auth/o2/token
CODE 来自初始授权请求的位置为:
"payload": {
"grant": {
"code": "<<REDACTED>>",
"type": "OAuth2.AuthorizationCode"
},
但这总是给我:
{"error_description":"The request has an invalid parameter : code","error":"invalid_grant"}
如果我删除code
它抱怨它丢失的参数,并且如果我将代码更改为无效,则错误会从 更改invalid_grant
为invalid_request
。所以它理解代码 - 但不喜欢整个流程的某些内容。
(我知道client_id
,client_secret
并且grant_types
是有效的,因为当我将它们更改为故意错误的东西时,我会得到一些预期的错误)。
知道我做错了什么吗?