oauth2.0 Amazon Alexa获取访问令牌

rn0zuynd  于 2023-10-15  发布在  其他
关注(0)|答案(1)|浏览(123)

我正在编写一个智能家居技能,需要一个访问令牌来发布设备(门铃)的匿名通知。文档令人困惑-但从我所推断的-我应该从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

其中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_idclient_secretgrant_types是有效的,因为当我故意将它们更改为错误时,我会得到一些预期的错误)。
知道我哪里做错了吗?

8yparm6h

8yparm6h1#

代码只能使用 * 一次 * -无论成功与否。因此,即使您使用它,并且您的请求被搞砸了或无法工作-您也不能重用它。唯一能处理的就是禁用技能,重新启用它,然后窥探并使用给定的 * 新 * 代码。

相关问题