Nic*_*ini 3 google-api google-authentication alexa alexa-skill alexa-skills-kit
我在 Alexa 帐户链接授权方面遇到了一些问题。
这些是我遵循的步骤:
handler_input.request_envelope.context.system.user.access_token问题是访问令牌在一小时后过期,Alexa 不管理令牌的刷新。
我应该怎么做才能避免每次一小时后都要求我的用户登录?我应该Implicit grant用作授权类型吗?我应该以某种方式获得刷新令牌吗?
附加信息:这是一项使用 Python3 连接到 AWS Lambda 的自定义技能
虽然@pinoyyid 的回答是正确的,但它没有提供解决方案,所以我发布了一个以供将来参考。
问题确实是亚马逊服务器没有收到谷歌的刷新令牌,因此无法在访问令牌过期一小时后刷新。
按照此链接和其他亚马逊论坛帖子,我找到了一个可行的解决方案。
亚马逊 Alexa 开发者控制台“账户关联”配置:
如果您的应用程序需要在用户不在浏览器中时刷新访问令牌,请将 [access_type] 值设置为离线。[...] 该值指示 Google 授权服务器在您的应用程序第一次为令牌交换授权代码时返回刷新令牌和访问令牌。
现在,这样做并保存配置后,要知道,你可能不会注意到的变化,因为,从这里:
当 Alexa 使用刷新令牌为现有用户检索新的访问令牌时,Alexa 使用在用户链接其帐户时配置的访问令牌 URI。因此,如果您稍后更改访问令牌 URI,之前链接其帐户的用户将继续使用旧 URI 来检索更新的令牌。用户必须取消链接并重新链接帐户才能切换到新的访问令牌 URI。
因此,为了完成该程序:
附加信息
我发现很多人建议检索刷新令牌,我不相信这是可能的,因为即使 Google 发送它,亚马逊也会存储它并使用它来刷新访问令牌。
编辑: 这适用于开发和测试,但我在这里发现,出于发布目的,您必须拥有将用户重定向到的登录页面。对我来说,只需要创建一个托管在公共 S3 存储桶中的简单 HTML 页面,它将请求重定向到我之前编写的授权 URI,而访问令牌 URI 必须保持为 Google 的。
| 归档时间: |
|
| 查看次数: |
1085 次 |
| 最近记录: |