向需要身份验证的第三方发出 API 请求

Making API requests to a 3rd party that requires authentication

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

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

我的困惑是 design/architecture 期待提供预订所需的 userid/password 对 API。

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

我是否应该将 userid/password 存储为与操作关联的“用户状态”?

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

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

  • Google does not allow 您通过您的操作收集凭据信息(即密码)。

  • 因此,您必须使用Account Linking来验证它们。

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

    • 这个数据库是保存 username/password 的好地方,您需要为他们使用 API...
    • ...但这意味着您需要格外小心地保护此数据库。

您并没有真正说明 API 如何创建和管理帐户。如果这些帐户仅供您使用(即 - 用户不一定会看到它们),那么您可以通过将 username/password 视为您管理和生成的不透明令牌来减轻部分风险没见过。

如果用户知道这一点,那么您需要通过以下两种方式之一访问该帐户 link:

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