Google Actions 帐户关联流程
Posted
技术标签:
【中文标题】Google Actions 帐户关联流程【英文标题】:Google Actions Account Linking Flow 【发布时间】:2017-01-07 06:20:34 【问题描述】:我已经为我的操作编写了一个授权流程,用于与“隐式流程”进行帐户链接。我一直在使用网络模拟器对其进行测试。当我尝试在网络模拟器中运行该操作时,它会告诉我链接我的帐户,并提供一个 URL:
“https://assistant.google.com/services/auth/handoffs/auth/start?provider=hello_dev&return_url=https://www.google.com/”
我运行那个 URL,结果是这样的:
我的 Java servlet 收到来自 google 的身份验证请求。它包含记录的内容、GOOGLE_CLIENT_ID、REDIRECT_URI、STATE 和“response_type=token” 我从使用 UserServiceFactory.getUserService().getCurrentUser().getUserId() 登录的 Google ID 创建访问令牌 我制作了一个指向重定向 uri 的 URL,其中包含我的 ACCESS_TOKEN、token_type=bearer 和 state= 我最初收到的状态字符串 我为包含该链接的用户创建了一个网页,以便他们可以单击它并执行该链接并链接我的帐户。效果很好,响应是一个空白页面,其 URL 显示:“https://www.google.com/?result_code=SUCCESS&result_message=Accounts+now+linked”。
但是,我想要一个允许用户确保他们已登录并登录到他们想要链接的 Google 帐户的流程
因此,我还提供了一个链接,如果他们愿意,可以将其注销。该链接是使用 userService.createLogoutURL(thisUrl)
创建的如果他们这样做,我会向他们展示一个登录链接,使用 userService.createLoginURL(thisUrl) 创建
一旦他们使用不同的 Google ID 登录,他们就会回到原来的页面,允许他们再次注销或点击“链接帐户”链接。
情况是,如果他们现在单击“链接帐户”链接,在他们注销(除了不同的 ACCESS_TOKEN 值)并使用不同的帐户重新登录之前,该链接将成功运行,响应是一个空白页面,其 URL 显示:“https://www.google.com/?result_code=FAILURE&result_message=Account+linking+failed”
注意两点:
如果他们注销并使用同一帐户重新登录,则“链接帐户”URL 可以正常工作 如果他们在开始该过程时根本没有登录,然后登录然后使用“链接帐户”链接就可以正常工作因此,唯一失败的情况是他们登录、注销、使用其他帐户登录,然后单击以链接帐户。那是它失败的时候。
帐户无关紧要,多个不同的帐户都可以使用,只要浏览器登录到第一个帐户并且在流程中不更改即可。
我真的无法想象这是怎么发生的。
如果我在 Google Home 应用程序中执行此操作,情况会变得更糟,因为它会返回一些“格式错误的请求错误”页面,并且基本上会永久停止工作。停止/开始动作没有帮助。停止/启动 Web 服务没有帮助。重新启动 android 设备没有帮助。 Google Home 应用中的关联帐号已永久损坏。我能够让它再次工作的唯一方法是在我的 Android 设备上的 Chrome 浏览器中使用帐户链接 URL(从网络模拟器获得),这似乎“重置”了一切。
【问题讨论】:
【参考方案1】:目前,我们要求通过模拟器和 Google Home 应用程序启动帐户关联过程的 Google 用户与通过 Google 登录选项登录的 Google 用户相同(如果提供为您的身份验证流程的一部分。这是一个硬性要求。
因此,我们建议您不要在帐户关联过程中提供 Google 注销选项。
【讨论】:
Minh,您能否在此处评论一下为什么使用 Amazon 登录适用于 Actions on Google 帐户链接,但链接到 Google 帐户却不行?谢谢***.com/questions/41491292/… 相对于我上面的评论,我现在了解到,虽然使用亚马逊登录在技术上适用于帐户链接而不是将用户引导到单独的第 3 方页面进行身份验证,但它不符合 Google 政策。因此,虽然这可以在部署前工作,但操作/代理部署不会被批准供公众使用。以上是关于Google Actions 帐户关联流程的主要内容,如果未能解决你的问题,请参考以下文章
如何取消 Actions on Google 和 Auth0 之间的帐户关联
Actions on Google - 在我的 Android 设备上测试我的项目
如何将 Firebase 帐户关联到 Google Play 游戏帐户