OpenAI API 身份验证上手指南从 API Key 到 OAuth 2.0 的正确选择【免费下载链接】openai-openapiOpenAPI specification for the OpenAI API项目地址: https://gitcode.com/GitHub_Trending/op/openai-openapi第一次执行curl请求返回了 401 Unauthorized。我当时也不确定是密钥填错了还是压根就不该用密钥这篇关于 OpenAI API 身份验证的文章写给还没对接过 OpenAI 的开发者。读完你会知道该选 API Key 还是 OAuth 2.0能跑通第一次成功调用并会查 401、403 这类报错。选型先行哪种验证方式适合你别急着看文档先回答三个问题你的应用跑在哪一侧只在你自己的服务器上运行用你自己的账户调接口API Key 就够用。要不要代某个用户访问 OpenAI 数据如果密钥属于终端用户你只是代跑那就需要 OAuth 2.0。密钥由谁保管需要把凭证分发给别人、或写进客户端代码密钥随时会外泄应走 OAuth 2.0 授权流程。复杂度上的差别一句话带过API Key 就是一个请求头OAuth 2.0 涉及用户授权、令牌交换和到期刷新链路更长。服务器端自用选 API Key第三方应用选 OAuth 2.0下面分别演示。用 API Key 跑通第一次调用️ 密钥获取与安全注入到 OpenAI 控制台的 API Keys 页面创建密钥。密钥以sk-开头后接一串随机字符本文一律用sk-xxxx表示你看到的任何sk-后接长字符串的文本都应当心。注入方式只用环境变量export OPENAI_API_KEYsk-xxxx预期结果终端执行echo $OPENAI_API_KEY能打印出完整密钥。注意 openapi.yaml 里把默认认证方式ApiKeyAuth定义为httpbearer也就是说密钥永远通过Authorization: Bearer请求头传递SDK 和库都是这么做的你不需要手写这个头。第一次成功调用用最简单的GET /v1/models做首次调用它不消耗模型额度只读列出可用模型。cURLcurl https://api.openai.com/v1/models \ -H Authorization: Bearer $OPENAI_API_KEYPythonopenai库默认读取OPENAI_API_KEY环境变量from openai import OpenAI client OpenAI() # 密钥自动取自环境变量 models client.models.list() for m in models.data[:5]: print(m.id)预期结果两者都返回 HTTP 200。cURL 输出一个 JSONobject: listdata数组里是模型条目含id、object、owned_by等字段Python 终端依次打印出前 5 个模型 ID。看到模型 ID 说明认证链路已通之后换成POST /v1/chat/completions等端点同一个密钥即可。三个不要不要把密钥写进前端代码、浏览器 Bundle 或任何用户能打开的产物里。不要把密钥提交进仓库——写进.env并把.env加进.gitignore提交前git grep sk-查一遍。不要让开发和生产共用同一把密钥分开创建出事时影响面可控。什么时候该上 OAuth 2.0场景是你做了一个第三方应用用户用自己的 OpenAI 账户登录你的应用你的代码需要读取该用户的对话、用量等数据。这时绝不能让用户把 API Key 交给你正确的做法是 OAuth 2.0 授权码流程用户在 OpenAI 授权页登录并同意授权动作方是用户OpenAI 回调你的应用带回一个一次性的授权码动作方是OpenAI 授权服务器你的后端拿授权码向授权服务器换取访问令牌动作方是你的应用之后每次调 API在请求头带上Authorization: Bearer access_token动作方是你的应用访问令牌到期前用刷新令牌换一张新的访问令牌动作方是你的应用。预期结果用户在授权页点允许后你的回调地址会收到code参数用该参数换到的access_token可直接发起 API 请求并得到 200。报错排查速查遇到 OpenAI 401 错误先按下表定位不用翻代码错误信号可能原因验证动作401 Unauthorized请求头没带密钥、格式不对或密钥已失效抓一次实际请求确认Authorization头是Bearer 完整密钥、无多余空格到控制台 API Keys 页查该密钥是否被吊销403 Forbidden密钥没有访问该端点的权限或账户有欠费对照所调端点在控制台确认该密钥的权限范围检查 Billing 页有无未支付账单令牌过期OAuth 2.0 请求返回 401/403访问令牌超出有效期记录令牌的签发时间与有效期到期前改用刷新令牌换新令牌后重放请求安全自检清单 上线前逐项打勾任何一项过不了就先别放量开发环境密钥经OPENAI_API_KEY环境变量注入.env已加入.gitignore全仓搜索sk-源码、笔记、示例文件里零硬编码密钥开发、测试、生产各持独立密钥互不混用本地.env里的密钥只用于当前机器不随文档、截图外发生产环境密钥存放在密钥管理服务或 CI/CD 的 Secret 变量中磁盘和镜像里查不到明文客户端产物前端、移动端包中不包含任何密钥已开启 API 请求日志每周查看一次调用来源制定密钥轮换计划如每 90 天一次并演练过一次轮换流程一句话收束自用服务器端调用选 API Key第三方代用户访问选 OAuth 2.0。完整定义见 openapi.documented.yml到 openai-openapi 项目仓库可获取最新规范。【免费下载链接】openai-openapiOpenAPI specification for the OpenAI API项目地址: https://gitcode.com/GitHub_Trending/op/openai-openapi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?