【问题标题】:Google assistant account linking with facebook谷歌助手账户与 facebook 关联
【发布时间】:2018-07-04 11:12:58
【问题描述】:

我正在尝试使用 Dialogflow for Google Home 制作聊天机器人。它要求用户输入一个 URL。现在它肯定会是一个又长又复杂的 URL,我无法重新创建,也无法让用户对着 google home 说话。

我的想法是用户将在 Messenger 上的代理上输入 URL。我将其存储在 Firebase 数据库中,然后使用第二个代理访问它。

现在我遇到的问题是身份验证,我希望在我的 google 操作上与 facebook 使用帐户链接。但我无法使用 google home 登录 Facebook。或者,如果可以,我找不到任何特定于该案例的文档。 Facebook 没有提供必要的客户端 ID 和密码(据我所知)。

我管理与 Alexa 和 Amazon Echo 关联的亚马逊和 Gmail 帐户。在这些情况下,您必须在 Alexa 应用程序或网页上登录谷歌或亚马逊。然后这将与您的 Echo 集成,该技能将变得可用。

任何人都知道如何使链接发生,如果没有,那么任何人都知道如何解决整体问题?

这个问题在其他论坛上没有得到解答,但我希望要么解决它,要么找到替代方案。

【问题讨论】:

  • 不清楚你在问什么,你的具体问题是什么。帐户链接如何工作,必须执行哪些步骤 - 在文档中进行了说明。 Google 助理是否允许您根据需要执行这些步骤 - 不知道,这需要您自己弄清楚。
  • 我会编辑问题,这比发表评论更有效。

标签: facebook firebase firebase-realtime-database firebase-authentication actions-on-google


【解决方案1】:

有三种方法可以解决您的整体问题 - 手动输入 URL 并使您的操作可用。他们中的两个按照您建议的方式解决了这个问题 - 涉及对 Facebook 进行身份验证并以某种方式将其绑定到 Assistant 帐户。一个完全在助手内部解决。

与 Facebook 帐户相关联的帐户

您已经标记了 firebase-authentication,所以我假设您正在使用它进行身份验证,并且您已经通过它启用了 Facebook 登录。这意味着您的用户有一个“Firebase 帐户”,但他们使用 Facebook 登录该帐户。

我假设你有办法在他们登录后从信使那里获取 URL。

在这种情况下,诀窍是在他们的 Firebase 帐户和他们的 Assistant 帐户之间设置 Account Linking。这是通过设置一个OAuth2 server 来完成的,该OAuth2 server 可以访问 Firebase 帐户并将创建授权和刷新令牌,并提供给 Google 助理。

在操作中,您会将用户发送到Sign In helper,这会将用户重定向到您的登录页面并将一次性身份验证代码发送回 Google 助理。然后,助手将使用您的 OAuth2 服务器将此代码交换为身份验证和刷新令牌。它会定期使用刷新令牌来获取新的身份验证令牌。

当用户通过 Google 助理返回对话时,您将获得一个身份验证令牌,您可以使用它来查找用户。由于您也知道他们的 Facebook 帐户,因此您可以通过您计划的方式获取 URL。

这种方法有一些缺点 - 它非常复杂,并且设置自己的 OAuth2 服务器不适合胆小的人。您也许可以使用 Auth0 之类的东西而不是 Firebase 身份验证来完成同样的事情,但是您无法轻松访问 Firebase 数据库。

帐户链接到 Facebook 和 Google

但是,在您的 Firebase 帐户中,您无需将其限制为仅登录 Facebook。您可以让他们使用 Firebase 来记录他们正在使用的 Facebook 和 Google 帐户。这会将您系统中的两个帐户“链接”在一起。

有了这个,您不需要设置 OAuth2 服务器。相反,您可以让助手使用Google Sign In 进行身份验证。如果 Firebase 使用的 Google Cloud 项目和 Assistant 使用的是同一个项目,那么一旦用户使用他们的 Google 帐户登录到您项目的网页,您将在 Assistant 上获得一个身份令牌,其中将包含他们的谷歌身份证。您可以使用它来匹配他们的 Firebase 帐户并获取 Facebook ID 并从那里继续。

但这仍然需要大量工作,而且有点混乱,需要在系统之间跳转。

仅使用 Google 助理(也可能是网页)

如果您愿意对您的用户使用的设备做出一些假设,那么您也许可以使用 Google 助理完成所有这些操作。智能助理不仅可以在 Google Home 和其他智能扬声器上运行,它还可以在大多数当前的 Android 和 iOS 设备上运行。

所以你可以detect if they have such a device available,如果他们这样做但他们目前不在上面,当你需要 URL 时,direct them to switch to that device

如果他们没有这样的设备可用(可能是因为他们的 Android 版本较旧),并且您认为这可能是一种常见情况,您可能需要提供另一个可用的入口源。这可能是上述解决方案之一,或者您可能只想拥有一个简单的网页(可能是通过 Firebase 托管和 Firebase 功能完成),他们使用他们的 Google 帐户登录(这样您就可以得到他们的 ID),然后让他们输入网址。如果您只需要一个 URL - 通过 Dialogflow 可能比您需要的更复杂。

【讨论】:

  • 这个答案非常适合我正在寻找的东西。原来我不需要 Facebook 登录或谷歌登录。我最终设置了一个用户可以使用的亚马逊登录。事实证明,仅通过帐户链接就可以直接从动作/技能中轻松设置。但老实说,这个答案无论如何都有帮助
猜你喜欢
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-03
  • 1970-01-01
  • 2016-07-19
  • 2018-05-21
相关资源
最近更新 更多