【问题标题】:Adding account linking to my Actions on Google app将帐户链接添加到我的 Actions on Google 应用
【发布时间】:2018-04-16 09:28:50
【问题描述】:

我使用 Actions SDK 创建了一个 Actions on Google 应用。为此,我如之前所说的 Actions SDK 使用了 firebase 函数来实现和 firestore 来存储数据。一切正常。

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

我的下一个大问题是如何在我的 Actions 应用中启用帐户链接。在 Actions on Google 文档中,我找到了 topic 如何扩展用于帐户链接的操作包。我的问题是了解 probiertes 需要哪些信息。

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

也许每个人都知道一个很好的网站来了解帐户链接的过程以及如何实施。

更新 1:

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

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

  1. 使用 google 帐户登录表单创建网站并使用 firebase 托管进行托管
  2. 设置 Oauth2 服务器
  3. 与关联的帐户交互。将帐户信息保存在我的 Firestore 数据库中

所以我从第一步开始。在 firebase 身份验证文档中,我找到了 example for a google login form。修改并托管示例后,我尝试了它。它工作正常。使用托管网站唱歌后,我的谷歌帐户与我的项目相关联。我在我的谷歌帐户设置中检查了这一点。还有包含大量数据的示例响应,例如个人资料名称、电子邮件地址等。所以我现在的问题是。为什么我现在必须设置 OAuth 服务器?使用示例表单登录后,我将我的帐户成功链接到我的项目。因此,我可以开始将接收到的数据保存在我的 firebase 数据库中,并在我的 Actions 应用程序中使用它们。

更新 2:

好的。也许我在理解正确使用帐户链接方面有一个普遍的问题。当他下次回来时,我会尝试识别使用我的操作提供特殊内容的用户。或者,也许可以在问题中使用他的谷歌帐户创建一个带有他的名字的问题。因此,据我了解,我必须将用户的谷歌帐户与我的操作相关联,并将帐户信息保存在数据库中以识别下次使用。那么此任务的帐户关联是否正确?

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    您的身份验证服务器可以放在任何地方。正如我所说 - 你可以通过 Firebase Functions 来完成,但你没有它。它只需要能够通过 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

    对更新 1 的响应

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

    从 OAuth 的角度来看 - 不,Google 帐户没有“链接”到您的项目。

    Google 已向您(即您编写的服务)颁发了一个令牌,让您的服务可以访问某些资源。这些资源包括有关特定用户的信息。

    这听起来像是我在拆分语义,但事实并非如此。它是 OAuth 提供的内容以及在您获得令牌时意味着什么的基础。您目前拥有授权可以做某些事情。

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

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

    此外,除了“他们就是这样做的”之外,您还需要设置 OAuth 服务器,因为现在需要为 Google 做同样的事情 - 允许他们在 你的服务器(喜欢使用它)。通常这将涉及“登录”。

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

    那么,为什么这么多网站都有“使用 Google 登录”或“使用 Facebook 登录”之类的内容?因为这些网站愿意相信,如果他们的服务器可以在谷歌或 Facebook 上获得某些信息的许可,那么他们就可以信任你。当他们登录到您的网站(通过网络或通过操作)时,您可能愿意接受这一点,但 Google 助理无法假设。他们需要确保用户真正登录到您的网站——该用户是有意这样做的,而您是有意让他们登录的。

    【讨论】:

    • 感谢您的回答。我不断了解有关 Oauth2 和帐户链接的更多信息。我更新了我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 2019-04-06
    • 2017-10-28
    相关资源
    最近更新 更多