首页 > 解决方案 > 向需要身份验证的第 3 方发出 API 请求

问题描述

这是我的场景。想象一下,有一个瑜伽工作室,它使用一个公开 API 的专业预订和预订系统。通过此 API,应用程序可以为客户端进行预订。API 使用客户端的用户名和密码进行预订。预订 API 不使用 OAuth 或任何社交媒体登录。

我的愿望是创建一个 Assistant Action 来检索课程列表并允许客户进行预订。

我的困惑是要寻找什么样的设计/架构来提供预订 API 所需的用户 ID/密码对。

其他人是如何解决这个难题的?

我应该将用户 ID/密码存储为与操作关联的“用户状态”吗?

标签: actions-on-google

解决方案


首先,您应该与 API 提供商讨论他们为什么不提供基于 OAuth 的解决方案。这是一个等待发生的安全漏洞,如果它还没有发生的话。

其次,在这种情况下,您需要非常仔细地考虑自己的风险状况:

  • Google不允许您通过您的操作收集凭据信息(即密码)。

  • 因此,您必须使用Account Linking对其进行身份验证。

  • 这意味着您将需要一些东西(即数据库或数据存储)来管理他们的帐户。

    • 该数据库将是保存您需要用于 API 的用户名/密码的好地方...
    • ...但是现在这意味着您需要格外小心地保护此数据库。

您并没有真正说明此 API 如何允许创建和管理帐户。如果这些帐户只是为您使用(即 - 用户不一定看到它们),那么您可以通过将用户名/密码视为您管理和生成且用户永远不会看到的不透明令牌来减轻部分风险.

如果这是用户知道的事情,那么您需要通过以下两种方式之一来处理帐户链接:

  1. 让他们使用您需要保存的凭据信息(确认!)通过应用程序或 Web 应用程序登录您的服务,然后使用 OAuth 链接到助手。
  2. 让他们使用 Google 登录通过应用程序或网络应用程序登录您的服务,这将延续到您的操作。然后让他们提供 API 的凭据信息,您需要保存这些信息(确认!)。

推荐阅读