当前位置: 首页 > 知识库问答 >
问题:

Alexa skill帐户与Google API凭据链接,问题刷新令牌

孙永嘉
2023-03-14

我在Alexa帐户链接授权方面遇到了一些问题。

以下是我遵循的步骤:

  1. 我从谷歌云控制台获得了凭据(客户端ID,客户端秘密...)
  2. Alexa开发人员控制台上的安装程序,使用授权代码授予作为授权授予类型
  3. 激活了我Alexa应用程序上的技能,并用我的Google帐户成功登录
  4. 现在我在请求中得到了访问令牌,在handler_input.request_envelope.context.system.user.access_token

问题是访问令牌在一小时后过期,Alexa不管理令牌的刷新。

我应该怎么做才能避免每次一小时后都要求我的用户登录?我应该使用隐式授权作为授权类型吗?我应该得到一个刷新令牌吗?

附加信息:这是一项使用Python3连接到AWS Lambda的自定义技能

共有2个答案

安泰平
2023-03-14

你读过吗https://developer.amazon.com/docs/account-linking/configure-authorization-code-grant.html ?

我的猜测是,刷新令牌丢失,因为您已经对应用程序进行了授权。RT只发布一次。试着进入https://myaccount.google.com/permissions?utm_source=google-帐目

西门建安
2023-03-14

虽然@pinoyyid的答案是正确的,但它并没有提供解决方案,所以我将发布一个供将来参考。

问题确实是亚马逊服务器没有收到谷歌的刷新令牌,因此无法在访问令牌过期一小时后刷新该令牌。

通过这个链接和其他亚马逊论坛帖子,我找到了一个可行的解决方案。

Amazon Alexa开发者控制台帐户链接配置

>

现在,在执行此操作并保存配置后,请注意,您可能不会注意到更改,因为:

当Alexa使用刷新令牌检索现有用户的新访问令牌时,Alexa使用在用户链接其帐户时配置的访问令牌URI。因此,如果您稍后更改访问令牌URI,则之前链接其帐户的用户将继续使用旧URI检索更新的令牌。用户必须取消链接并重新链接帐户才能切换到新的访问令牌URI。

因此,为了完成该程序:

  1. 停用您的技能

附加信息

我发现许多人建议检索刷新令牌,我不相信这是可能的,因为即使谷歌发送它,也是亚马逊存储它并使用它来刷新访问令牌。

编辑:这对于开发和测试来说很好,但我在这里发现,出于发布目的,您必须拥有您将用户重定向到的登录页。对我来说,只需要创建一个托管在公共S3 bucket中的简单HTML页面,该页面将请求重定向到我之前编写的授权URI,而访问令牌URI必须保持为Google URI。

 类似资料:
  • 我正在创建一个帐户链接Alexa技能。我得到了链接授权码并将其交换为访问令牌。然后,我尝试将所有参数:代码、访问令牌、技能ID放入Alexa技能激活API。我总是得到一个信息:“无效的帐户链接凭据”。 要怎么做?

  • 引用的员额: 为什么OAuth v2既有访问令牌又有刷新令牌? 刷新令牌有什么意义?

  • 你会认为亚马逊的两种产品会很好地整合在一起。你还会认为亚马逊会在他们的服务上留档。两者都大错特错。 我正在使用与Alexa的帐户链接,并使用AWS Cognito作为我的oauth提供商。我能够成功地链接我的帐户只是罚款,并与每一个后续的alexa调用我得到一个访问令牌返回给我。现在怎么办? 我需要能够从alexa lambda功能访问其他AWS服务,如dynamo、lambda和iot。我想这很

  • 我的技能需要帐户链接,它将通过OAuth 2.0协议使用AWS cognito用户池对客户进行身份验证。我可以在用户池中指定刷新令牌的TTL,我决定将其有效期设置为60天。 据我所知,alexa将访问令牌与您的技能收到的每个请求一起发送给您,以便您能够识别使用该技能的客户。如果他们的访问令牌过期,alexa将通过在将带有访问令牌的请求转发给您之前刷新他们的令牌来处理此问题。因此,您可以拥有有效的访

  • 我正在使用Google Oauth2 API连接到Google广告,当我的@gmail出现时,我将成为唯一一个刷新令牌。com帐户对两个不同的谷歌广告帐户具有读取权限。 我有账户a@gmail.com.此帐户具有对谷歌广告帐户的读取权限b@gmail.com和c@gmnail.com. 当我用b@gmail.com和c@gmail.com的帐户的电子邮件a@gmail.com创建两个到谷歌广告的连