1

我正在编写 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_grantinvalid_request。所以它理解代码 - 但不喜欢整个流程的某些内容。

(我知道client_id,client_secret并且grant_types是有效的,因为当我将它们更改为故意错误的东西时,我会得到一些预期的错误)。

知道我做错了什么吗?

4

1 回答 1

2

该代码只能使用一次- 无论成功与否。因此,即使您使用它并且您的请求是拙劣的或以其他方式不起作用 - 您也无法重复使用它。我唯一能够处理的就是禁用该技能,重新启用它,然后窥探并使用给定的代码。

于 2020-08-03T15:43:51.597 回答