与Facebook关联的Google助手帐户

时间:2018-07-04 11:12:58

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

我正在尝试使用Dialogflow for Google Home创建聊天机器人。它要求用户输入一个URL。现在肯定会是一个漫长而复杂的URL,我无法重新创建它,也无法让用户进入Google主页。

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

帐户已链接到Facebook帐户

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

我认为一旦登录,您就可以从Messenger获取URL。

在这种情况下,技巧是在其Firebase帐户和其助手帐户之间设置Account Linking。这是通过设置OAuth2 server来完成的,该{@ 3}可以访问Firebase帐户,并将创建授权和刷新令牌,这些令牌将分配给助手。

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

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

此方法有弊端-它非常复杂,并且设置自己的OAuth2服务器不是出于胆小。您可能可以使用Auth0之类的东西来代替Firebase身份验证来完成相同的事情,但是那样一来,您就无法轻松访问Firebase数据库。

帐户同时链接到Facebook和Google

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

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

但这仍然是很多工作,而且在系统之间切换时有点混乱。

仅使用Google助手(也许还有一个网页)

如果您愿意对用户使用的设备做一些假设,那么您可以使用助手完全完成所有操作。助手不仅可以在Google Home和其他智能扬声器上运行,而且还可以在大多数最新的Android和iOS设备上运行。

因此,您可以detect if they have such a device available,如果需要,direct them to switch to that device也可以{{3}}。

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