Amazon Alexa 获取访问令牌

问题描述 投票:0回答:1

我正在编写一个智能家居技能,需要一个访问令牌来为设备(门铃)发布异步通知。该文档令人困惑 - 但根据我的推断 - 我应该从 Alexa 控制台获取我的 client_id 和 client_secret ,并在初始技能连接/授权期间获取承载令牌,然后通过请求访问令牌(和刷新令牌) OAuth。所以我可以获得这三个信息,但随后我尝试这样做:

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

来自初始授权请求的代码为:

        "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
是有效的,因为当我将它们更改为故意错误的内容时,我会收到一些预期的错误)。

知道我做错了什么吗?

oauth-2.0 oauth alexa alexa-smart-home-skill
1个回答
2
投票

该代码只能使用一次 - 无论成功与否。因此,即使您使用它并且您的请求被破坏或不起作用 - 您也无法重复使用它。我唯一能够处理这个问题的是禁用该技能,重新启用它,然后窥探并使用给定的new代码。

© www.soinside.com 2019 - 2024. All rights reserved.