Amazon Alexa 获取访问令牌
Amazon Alexa Get Access token
我正在编写一个 SmartHome 技能,需要一个访问令牌来 post 设备(门铃)的异步通知。文档令人困惑 - 但据我推断 - 我应该从 Alexa 控制台获取我的 client_id 和 client_secret,并在初始技能 connection/authorization 期间获取 Bearer Token,然后通过 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_id
、client_secret
和 grant_types
是有效的,因为当我将它们更改为故意错误的内容时,我会得到一些预期的错误)。
知道我做错了什么吗??
代码只能使用一次 - 无论成功与否。因此,即使您使用它并且您的请求被搞砸或以其他方式不起作用 - 您也无法重用它。我唯一能够处理的就是禁用技能,re-enabled它,然后窥探并使用给定的新代码。
我正在编写一个 SmartHome 技能,需要一个访问令牌来 post 设备(门铃)的异步通知。文档令人困惑 - 但据我推断 - 我应该从 Alexa 控制台获取我的 client_id 和 client_secret,并在初始技能 connection/authorization 期间获取 Bearer Token,然后通过 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_id
、client_secret
和 grant_types
是有效的,因为当我将它们更改为故意错误的内容时,我会得到一些预期的错误)。
知道我做错了什么吗??
代码只能使用一次 - 无论成功与否。因此,即使您使用它并且您的请求被搞砸或以其他方式不起作用 - 您也无法重用它。我唯一能够处理的就是禁用技能,re-enabled它,然后窥探并使用给定的新代码。