9

我正在使用外部 API 开发 Google Home 应用程序。我需要当前用户登录并与外部 API 链接(外部 API 提供的访问/刷新令牌)。

我的做法:

  • 设置 Firebase 应用程序
  • google home 应用程序位于函数文件夹中。
  • 我会设置一个页面,用户首先使用他的 Google 帐户使用firebase.auth()登录,然后是他的外部 API 帐户(使用外部 API Oauth)。
  • 然后,我将在 firebase 数据库中创建一个条目,为每个用户存储外部 API 提供的访问/刷新令牌。

这是我有点困惑和卡住的地方。我设法设置了登录页面(Google 登录,然后是外部 API 登录)并将其存储在 firebase 数据库(/users/{google_uid})中。

现在它在数据库中,我如何在 Google Home 应用程序中设置身份验证?

谢谢!

4

2 回答 2

3

您在考虑将帐户与 Actions On Google 和 Google Home 关联时存在一些问题。Google Home 不会让您直接访问 Google 帐户 - 相反,它的作用类似于网络浏览器,并且帐户链接过程要求您向 Home“浏览器”颁发 OAuth2 令牌以供将来使用。

如果您可以控制外部 API,并且它发出 OAuth2 令牌(听起来确实如此),您可以完全跳过 Firebase 部分。您只需要使用此外部服务的 OAuth2 信息配置 API.AI - 客户端 ID 和密码、登录页面和令牌交换页面的 URL 等。在这种情况下,您的 webhook 将被调用,提供 OAUth2调用它时应该传递给外部 API 的访问令牌。详细信息在 Actions for Google 文档帐户关联文档中。

如果您无法控制此 API,则可能需要提供 OAuth2服务器的基本实现,该服务器可以分发身份验证令牌(您创建的或可用于从外部 API 获取身份验证令牌的)。然后将使用这些 OAuth 令牌调用您的 webhook,您应该使用该令牌来查找用于访问外部 API 的令牌。您有一些选项来实现这一点,这些选项在Google 文档操作中的OAuth2 帐户链接概述中进行了讨论。

于 2017-03-25T13:07:03.690 回答
3

首先,您需要有一个项目console.developers.google.com并在您的项目中激活Google Actions API。然后,您应该按照以下步骤操作:

  1. 在您的 API 中将以下重定向 URI 列入白名单: https ://oauth-redirect.googleusercontent.com/r/

  2. 在您的 API.AI 项目中,转到集成并启用 Google Card 上的操作。

  3. 在 Actions on Google 的设置中,放置您的项目 ID,然后为欢迎意图和用户需要凭据的任何其他意图 选择登录。在此处输入图像描述

  4. 下面,您将找到 OAuth2 字段,例如 clientID、客户端密码、授权 URL 和令牌 URL。使用您的 API 的 OAuth2 信息来完成它并授权应用程序。 在此处输入图像描述

授权后,您可以预览应用程序,它将在您的 Google Home 设备中可用,并且当您第一次调用时,它会在您的 Google Home 应用程序中提供一张卡片来进行链接。如果您没有设备,可以使用 Web 模拟器来测试您的操作。

有关更多信息,请访问google文档中的操作。

于 2017-03-21T12:30:38.647 回答