我正在尝试使用Python的requests模块向Proactive Events API发出请求。
但是,我总是收到作用域无效的响应。有人能帮上忙吗?我做错了什么?我的代码如下所示:
@ask.launch
def launch():
content_type = "application/x-www-form-urlencoded;charset=utf-8"
client_id = "amzn1.application-oa2-client.6a48XXXXXXX408"
client_secret = "592XXXXxxxxxxx6"
scope = "alexa::proactive_events"
grant_type = "client_credentials"
data = {"grant_type": grant_type, "client_id": client_id, "client_secret": client_secret, "scope": scope}
r = requests.post("https://api.amazon.com/auth/O2/token", data=data, headers={"content-type": content_type})
speech = render_template("welcome")
reprompt = render_template("welcome_reprompt")
return question(speech).reprompt(reprompt)这就是我得到的回答:
{'error_description': 'The request has an invalid parameter : scope', 'error': 'invalid_scope'}发布于 2019-01-28 22:39:12
因为你得到无效作用域的原因之一是你的技能清单中没有包含事件,所以我在这里包含一些步骤。我发现使用SMAPI来更新技能清单相当麻烦,所以我使用了ask cli。
ask api get-skill -s "amzn1.ask.skill.ZZZYYYZZ" --stage development > skill.json{ "name": "alexa::devices:all:notifications:write" }
和
"events": { "publications": [ { "eventName": "AMAZON.AAABBBCC" } ], "endpoint": { "uri": "https://XXXYYYZZ:443/whatevercontext" } }
ask api update-skill -s "amzn1.ask.skill.ZZZYYYZZ" --stage development -f skill.json- enable the notifications in the alexa app for your specific skill
现在,您应该能够获取令牌,下一步是将通知发送到设备
发布于 2018-12-17 17:35:48
您是否尝试过通过任何其他方法进行API调用?我刚刚用Postman试过了,它对我很管用。
我的Python有点生疏了,但这是Postman为Python自生成的代码。这可能会有帮助吗?
import http.client
conn = http.client.HTTPConnection("api,amazon,com")
payload = "grant_type=client_credentials&client_id=amzn1.application-oa2-client.whatever-value&client_secret=client-secret&scope=alexa%3A%3Aproactive_events&undefined="
headers = {
'Content-Type': "application/x-www-form-urlencoded"
}
conn.request("POST", "auth,O2,token", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))发布于 2018-12-18 01:48:21
就像Karthik之前问的那样,你试过通过邮递员打电话吗?在你尝试编码之前,我首先建议你试着通过邮递员。
如果问题仍然存在,很可能是因为您没有在技能清单中包含主动事件所需的必要权限。要向技能清单添加必要的权限,您需要使用技能管理API & ASK Cli。按照文档的这一部分操作,并访问其中引用的链接,以正确地将所需权限添加到您的skill - https://developer.amazon.com/docs/smapi/proactive-events-api.html#onboard-smapi
一旦您成功添加了具有技能模式的事件和发布,您就应该能够成功地生成令牌了。如果您想让我更详细地说明具体步骤,请务必询问。干杯!
https://stackoverflow.com/questions/53795375
复制相似问题