我在Alexa中创建使用帐户链接的自定义技能。我使用OAuth2 php库创建了自己的身份验证服务器,并在技能配置中配置了授权URL和令牌URL。
当我尝试从Alexa移动应用程序进行帐户链接时,我收到错误“无法链接您的技能”。以下是我的工作进展。
我已经通过我的论坛了解相同,但无法找到究竟是什么问题。在这方面,请任何人帮助我。
如果您的重定向链接目前是:
https://layla.amazon.com/api/skill/link/xxxxxxxxxxxxxx?code=xxxxxxxxx&state=xxxxx
你需要将?
改为#
EG
https://layla.amazon.com/api/skill/link/xxxxxxxxxxxxxx#code=xxxxxxxxx&state=xxxxx
我也遇到了同样的问题,通过在“客户端身份验证方案”中选择“请求正文中的凭据”(默认为Http basic)来解决问题,因为我的案例中的访问令牌是在邮件正文中发送的。检查服务器如何发送身份验证令牌。
在我的情况下,问题在于客户端密码,在Google开发者控制台中添加您的技能重定向URI并重新检查您在alexa技能授权授权类型中提供的客户端密钥
我的问题是最后的AccessToken调用。我假设它正在使用GET请求,所以我只在我的函数中提供这个。它实际上是在创建一个访问令牌。所以它正在使用POST。
在我更新我的函数以使用帖子并以JSON格式返回AccessToken之后,一切正常。
认为这可能有助于任何人想知道Alexa服务如何发布到他们的OAuth端点,因为它非常不透明且没有文档记录。重定向到Alexa服务会向定义的OAuth端点发起POST请求,其中帖子正文为x-www-form-urlencoded格式而不是JSON。所以POST看起来像这样。
POST /authentication/1/oauth HTTP/1.1 url.Values{} grant_type=authorization_code&code=XXXXXXXXXXXXXXXXXXXXXXXXX&redirect_uri=https%253A%252F%252Fpitangui.amazon.com%252Fapi%252Fskill%252Flink%252FM9BEOG3DM65SQ&client_id=XXXXXXXXXXXXXXXXXXXXXX
如果您的端点没有解析此数据或期望某些格式可以轻松解组,那么它可能会失败并返回406响应。