OpenAI GPT Actions 认证
Actions 提供不同认证方式,以适应不同场景。在 GPT 编辑器中,为 Action 选择 None(无认证)、API Key(API 密钥)或 OAuth。
所有 Action 的默认认证方式为 None。你可以修改设置,让不同 Action 采用不同认证方式。
无认证
对于用户无须提供 API 密钥或通过 OAuth 登录、便可直接向 API 发起请求的应用,可以使用无认证流程。
初次交互时可考虑无认证方式,因为强制登录可能造成用户流失。先提供“未登录”的体验,再通过启用另一个独立 Action,引导用户进入“已登录”的体验。
API 密钥认证
GPT 编辑器界面支持 API 密钥认证,与用户直接使用 API 的方式类似。OpenAI 将密钥存入数据库时会进行加密,以保护 API 密钥。
如果 API 执行的操作比无认证场景稍有影响,但又无须每个用户单独登录,这种方式比较适用。添加 API 密钥认证可以保护 API,提供更精细的访问控制,并帮助你了解请求来源。
OAuth
Actions 支持每位用户分别通过 OAuth 登录,适合提供个性化体验及更强大的操作能力。典型流程如下:
- 在 GPT 编辑器中选择 Authentication(认证),再选择 OAuth。
- 填写 OAuth 客户端 ID、客户端密钥、授权 URL、令牌 URL 和作用域。
- 客户端 ID 和密钥可以是普通文本字符串,但应遵循 OAuth 最佳实践。
- OpenAI 保存加密后的客户端密钥;客户端 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'}。https://chatgpt.com/aip/{g-YOUR-GPT-ID-HERE}/oauth/callback也有效。 - 用户需要先发送一条会调用该 OAuth Action 的消息,随后 ChatGPT 界面会显示 Sign in to [domain](登录到指定域名)按钮。
- 原文将应返回如下响应的端点称为
authorization_url:{ "access_token": "example_token", "token_type": "bearer", "refresh_token": "example_token", "expires_in": 59 }。 - 原文随后说明:登录期间,ChatGPT 会使用指定的
authorization_content_type向authorization_url发起请求,期望获得访问令牌,以及可选的刷新令牌,后者用于定期换取新的访问令牌。 - 用户每次请求 Action 时,用户令牌都会放入 Authorization 请求头:
"Authorization": "[Bearer/Basic] [user’s token]"。 - 出于安全考虑,OAuth 应用必须使用 state 参数。
原文口径提示:以上两处将返回或换取令牌的端点写成
authorization_url,与前面分别配置授权 URL、令牌 URL 的表述存在歧义。本地稿保留该来源口径并列入待核;实现时须核对提供商的授权与令牌端点职责,不能据此认定两者相同。
自定义 GPT 无法登录,是否与重定向 URL 有关?
- 确认已在 OAuth 应用中允许相应重定向 URL。
- 第一种 URL:
https://chat.openai.com/aip/{g-YOUR-GPT-ID-HERE}/oauth/callback。某些客户端可能使用不同域名。 - 第二种 URL:
https://chatgpt.com/aip/{g-YOUR-GPT-ID-HERE}/oauth/callback。保存 GPT 后,可从 ChatGPT 界面的地址栏取得 GPT ID。如果有多个 GPT,应分别登记;是否使用通配符取决于可接受的风险。 - 调试时查看认证提供商日志。提供商通常会记录失败原因,例如
redirect_uri is not registered for client,有助于定位登录问题。

TRAE-AI编程


更多建议: