English
主导航

旧版 API

GPT Action 身份验证

了解 GPT Actions 的身份验证选项。

Actions 提供了不同的身份验证机制,以适应各种用例。要为你的 action 指定身份验证机制,请使用 GPT 编辑器并选择“None”、“API Key”或“OAuth”。

默认情况下,所有 actions 的身份验证方法均设为“None”,但你可以更改此设置,并允许不同的 actions 使用不同的身份验证方法。

无身份验证

对于用户无需 API 密钥或通过 OAuth 登录即可直接向你的 API 发送请求的应用,我们支持无身份验证的流程。

考虑在初始用户交互时使用无身份验证,因为如果强制用户登录应用,可能会导致用户流失。你可以创建一种“未登录”体验,然后通过启用单独的 action 将用户引导至“已登录”体验。

API 密钥身份验证

就像用户可能已经习惯使用你的 API 那样,我们允许通过 GPT 编辑器 UI 进行 API 密钥身份验证。在将密钥存储到我们的数据库时,我们会对密钥进行加密,以确保你的 API 密钥安全。

如果你的 API 执行的操作比无身份验证流程稍微重要一些,但又不需要单个用户登录,那么这种方法会非常有用。添加 API 密钥身份验证可以保护你的 API,为你提供更精细的访问控制,并让你了解请求的来源。

OAuth

Actions 允许每个用户通过 OAuth 登录。这是提供个性化体验并为用户提供最强大 actions 的最佳方式。带有 actions 的 OAuth 流程的一个简单示例如下所示:

  • 首先,在 GPT 编辑器 UI 中选择“Authentication”,然后选择“OAuth”。
  • 系统将提示你输入 OAuth 客户端 ID、客户端密钥、授权 URL、令牌 URL 和作用域。
    • 客户端 ID 和密钥可以是简单的文本字符串,但应该 遵循 OAuth 最佳实践.
    • 我们会存储客户端密钥的加密版本,而客户端 ID 对最终用户可见。
  • OAuth 请求将包含以下信息: request={'grant_type': 'authorization_code', 'client_id': 'YOUR_CLIENT_ID', 'client_secret': 'YOUR_CLIENT_SECRET', 'code': 'abc123', 'redirect_uri': 'https://chat.openai.com/aip/{g-YOUR-GPT-ID-HERE}/oauth/callback'} Note: https://chatgpt.com/aip/{g-YOUR-GPT-ID-HERE}/oauth/callback 也是有效的。
  • 为了让用户能够使用带有 OAuth 的 action,他们需要发送一条调用该 action 的消息,随后 ChatGPT UI 中将向用户显示一个“Sign in to [domain]”按钮。
  • The authorization_url 端点应返回类似于以下内容的响应: { "access_token": "example_token", "token_type": "bearer", "refresh_token": "example_token", "expires_in": 59 }
  • 在用户登录过程中,ChatGPT 会向你的 authorization_url 使用指定的 authorization_content_type,我们期望返回一个访问令牌,以及可选的 刷新令牌 我们用它来定期获取新的访问令牌。
  • 每次用户向 action 发送请求时,用户的令牌都会在 Authorization 标头中传递:(“Authorization”: “[Bearer/Basic] [user’s token]”)。
  • 我们要求 OAuth 应用使用 state 参数 for security reasons.

在自定义 GPT 上遇到登录失败问题(重定向 URL)?

  • 请确保在你的 OAuth 应用中启用此重定向 URL:
  • #1 重定向 URL: https://chat.openai.com/aip/{g-YOUR-GPT-ID-HERE}/oauth/callback (某些客户端可能使用不同的域名)
  • #2 重定向 URL: https://chatgpt.com/aip/{g-YOUR-GPT-ID-HERE}/oauth/callback (保存后在 ChatGPT UI 的 URL 栏中获取你的 GPT ID)如果你有多个 GPT,则需要根据风险承受能力为每个 GPT 单独启用,或者使用通配符。
  • 调试提示:你的身份验证提供程序通常会记录失败日志(例如‘redirect_uri is not registered for client’),这也有助于调试登录问题。