Google 与 facebook 关联的助手帐户

Google assistant account linking with facebook

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

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

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

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

任何人都知道我如何使 link 发生,如果没有,那么任何人对我如何解决整个问题有想法?

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

可以通过三种方法解决您的总体问题 - 手动输入 URL 并可用于您的操作。他们中的两个按照您建议的方式解决它 - 涉及对 Facebook 进行身份验证并将其以某种方式绑定到助手帐户。一个完全在助手里面解决。

链接到 Facebook 帐户的帐户

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

我假设您有办法在 Messenger 登录后获取 URL。

本例中的诀窍是设置 Account Linking between their Firebase account and their Assistant account. This is done by setting up an OAuth2 server 可以访问 Firebase 帐户,并将创建提供给智能助理的授权和刷新令牌。

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

当用户 returns 通过智能助理加入对话时,您将获得一个授权令牌,您可以使用它来查找用户。由于您也知道他们的 Facebook 帐户,因此您可以通过您计划的任何方式获取 URL。

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

帐户链接到 Facebook 和 Google

但是,在您的 Firebase 帐户中,您无需将它们限制为仅登录 Facebook。您可以让他们使用 Firebase 来记录他们正在使用的 Facebook 和 Google 帐户。这将 "link" 这两个帐户一起出现在您的系统中。

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

但这仍然是很多工作,而且有点乱,在系统之间跳来跳去。

仅使用 Google 助手(可能还有网页)

如果您愿意对您的用户使用的设备做出一些假设,那么您可以只需 使用 Google 助理即可完成所有操作。 Google 助理不仅 运行 适用于 Google Home 和其他智能音箱,它还适用于最新的 Android 和 iOS 设备。

因此,当您需要 URL 时,您可以 detect if they have such a device available and, if they do and they're not currently on it, direct them to switch to that device

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