我的Alexa帐户链接授权存在一些问题。
这些是我遵循的步骤:
handler_input.request_envelope.context.system.user.access_token
的请求中获得了访问令牌问题是访问令牌在一小时后过期,Alexa无法管理令牌的刷新。
我该怎么做避免在一小时后每次都要求用户登录?我应该使用Implicit grant
作为授权类型吗?我应该以某种方式获得刷新令牌吗?
其他信息:这是一项自定义技能,可使用Python3连接到AWS Lambda
答案 0 :(得分:1)
您读过https://developer.amazon.com/docs/account-linking/configure-authorization-code-grant.html吗?
我的猜测是,由于您已经自动安装了该应用程序,因此缺少刷新令牌。 RT仅发布一次。尝试进入https://myaccount.google.com/permissions?utm_source=google-account&utm_medium=web撤消权限,然后重试。
答案 1 :(得分:0)
虽然@pinoyyid的答案是正确的,但它没有提供解决方案,因此我将发布一个解决方案,以供将来参考。
问题确实是Amazon服务器没有收到Google的刷新令牌,因此无法在一个小时的过期时间后刷新访问令牌。
在this链接和其他Amazon论坛帖子之后,我找到了一个可行的解决方案。
Amazon Alexa开发人员控制台的“帐户链接”配置:
如果在浏览器中不存在用户时您的应用程序需要刷新访问令牌,则将[access_type]值设置为脱机。 [...]此值指示Google授权服务器在您的应用程序首次将授权代码交换为令牌时返回刷新令牌和访问令牌。
现在,执行此操作并保存配置之后,请注意,您可能不会注意到更改,例如here:
当Alexa使用刷新令牌为现有用户检索新的访问令牌时,Alexa使用在用户链接其帐户时配置的访问令牌URI。因此,如果您以后更改访问令牌URI,则在关联其帐户之前的用户将继续使用旧URI来检索更新的令牌。用户必须取消链接并重新链接帐户才能切换到新的访问令牌URI。
因此,为了完成该过程:
其他信息
我发现许多人建议检索刷新令牌,我不认为这是可能的,因为即使Google发送了它,也是由亚马逊存储并使用它刷新访问令牌。