添加帐户关联到Google应用上的操作

时间:2017-11-03 15:29:30

标签: firebase oauth-2.0 firebase-authentication google-oauth actions-on-google

我使用Actions SDK在Google应用上创建了一项操作。为此,我在Actions SDK之前使用了firebase函数,用于履行的firebase函数和用于存储数据的firestore。一切正常。

现在我想实现帐户关联以提供用户特定信息。我开始阅读完整的documentation帐户链接与指向集成Oauth 2.0服务器很快。这是我第一次使用帐户链接和Oauth服务器,现在我完全糊涂了。我不明白我的auth服务器必须在哪里,如何设置它以及它必须处理哪些参数。在阅读更多内容并搜索结果后,我发现firebase提供了帐户身份验证。这个firebase产品与Oauth服务器类似,这是对的吗?

我的下一个大问题是如何在我的“动作”应用中启用帐户关联。在Google文档操作文档中,我找到了topic如何扩展操作包以进行帐户关联。我的问题是要解释问题所需的信息。

总结一下,如果firebase身份验证真的是Oauth服务器,我需要做的是我的应用程序和firebase身份验证协同工作。

也许每个人都知道一个很好的网站,可以了解帐户关联的过程以及如何实施。

更新1:

在得到我的问题的第一个答案后,我开始研究有关帐户关联和身份验证过程的更多信息。

在此之后我创建了以下路线图:

  1. 使用Google帐户以唱片形式创建一个网站,并使用firebase hosting
  2. 托管该网站
  3. 设置Oauth2服务器
  4. 与关联帐户互动。在我的firestore数据库中保存帐户信息
  5. 所以我从第一步开始。在firebase身份验证文档中,我找到了example for a google login form。修改并托管示例后,我尝试一下。它工作正常。在使用托管网站进行唱歌后,我的Google帐户与我的项目相关联。我在谷歌帐户设置中检查了这一点。此外,示例响应包含大量数据,如配置文件名称,电子邮件地址等。所以我现在的问题是。为什么我现在必须设置OAuth服务器?在使用示例表单登录后,我将我的帐户与我的项目成功关联。因此,我可以开始将收到的数据保存在我的firebase数据库中,并在我的操作应用程序中使用它们。

    更新2:

    好的。 Maybey我有一个理解正确使用帐户链接的一般问题。我尝试确定下次回来时使用我的操作提供特殊内容的用户。或者也许在问题中用他的谷歌帐户创建一个带有他名字的问题。因此,根据我的理解,我必须将用户google帐户与我的操作相关联,并将帐户信息保存在数据库中以确定下次使用情况。那么这个任务的帐户链接是正确的吗?

1 个答案:

答案 0 :(得分:6)

不,Firebase身份验证 OAuth2服务器。

Firebase身份验证为您提供了一种管理基于Firebase的Web或移动应用程序的用户帐户的方法。通过Auth UI,用户可以使用各种方式(包括他们的Google帐户,Facebook帐户或电话号码)登录该帐户。但是,它不提供OAuth2服务器提供的组件。

最值得注意的是,它没有为用户提供通过其他客户端(如Google智能助理)登录以获取该客户端授权的任何方式。使用Firebase身份验证时,您无法向智能助理发出令牌,也无法接受智能助理中的令牌,并验证这是否是Firebase身份验证中的用户。

您需要自己构建这些组件。 Google describes the minimum tasks that it needs to do as part of this authentication。您可以在构建此类服务器时将Firebase身份验证作为其中的一部分使用(例如,这是让人们登录其帐户并验证该帐户的好方法),并且使用Firebase数据库是合理的如果你走这条路线来存储用户令牌,Firebase功能可能是实现令牌交换点的一个有用的地方,Firebase Hosting可以很好地托管登录页面本身 - 但是你需要编写“全部放入”的代码一起”。

您的auth服务器可以放在任何地方。正如我所说 - 你可以通过Firebase功能来实现,但你没有它。它只需要能够通过HTTPS端点上的Web URL提供一些响应。

完成此操作后,您需要configure the endpoints on the actions console and implement a request for account linking in your code or in the action package

对Update 1的回应

  

在使用托管网站进行唱歌后,我的Google帐户与我的项目相关联。我在谷歌帐户设置中检查了这一点。

从OAuth的角度来看 - 不,Google帐户与您的项目没有“关联”。

Google已向您发出令牌(即您撰写的服务),该令牌可让您的服务访问某些资源。这些资源包括有关特定用户的信息。

这可能听起来像是在分裂语义,但事实并非如此。它是OAuth所提供的内容以及当您获得令牌时它意味着什么的基础。您目前有授权来执行某些操作。

  

为什么我现在必须设置OAuth服务器?在使用示例表单登录后,我将我的帐户与我的项目成功关联。因此,我可以开始将收到的数据保存在我的firebase数据库中,并在我的操作应用程序中使用它们。

您尚未关联自己的帐户。你有权做某些事情。

此外,除了“他们是如何做到的”之外,你需要设置一个OAuth服务器,因为现在需要为Google做同样的事情 - 给他们做特定事情的权限< em>你的服务器(就像使用它一样)。通常情况下,这将涉及“登录”。

帐户关联实际上是“登录”的一个奇特术语。您需要一种方法让用户能够登录您的服务器。您有一个访问令牌,但这大致相当于登录 Google的服务器

那么,为什么这么多网站会出现“使用Google登录”或“使用Facebook登录”等内容?因为这些网站愿意相信,如果他们的服务器可以在Google或Facebook上获得某些信息,那么他们就可以信任您。并且您可能愿意接受当他们登录您的网站时(通过网络或通过操作),但助理不能假设。他们需要确保用户真正登录到您的网站 - 该用户故意想要这样做并且您故意让他们进入。