【干货】把 refresh_token_got-it 部署到 Zeabur:获取 OpenAI Refresh Token / Access Token(一步到位)
最近在折腾 OpenAI OAuth 授权时,我踩了一个很典型的坑:
服务部署在 Zeabur 没问题,但授权回调会被强制跳到 http://localhost:1455/auth/callback,看起来像“失败”,其实流程还没结束。
这篇文章把完整流程梳理一遍,照着做基本不会翻车。
项目地址:refresh_token_got-it
https://github.com/loLollipop/refresh_token_got-it
1. 项目是做什么的?
一句话:这是一个基于 OAuth2 + PKCE 的 Token 提取工具。
它把敏感流程放在服务端处理,前端只负责交互;拿到结果后会在页面展示可用的 refresh_token / access_token 等字段,适合自用或做二次集成。
2. 在 Zeabur 上部署
2.1 准备代码
先把项目放到你自己的 GitHub 仓库(Fork 或直接推送都行)。
2.2 创建服务
- 登录 Zeabur Dashboard
- 新建 Project
- 选择 New Service → Git
- 选择你的仓库并点击 Deploy
Zeabur 一般会自动识别 Node.js 项目并完成构建。
2.3 配置公网访问地址
- 等待服务状态变成 Running
- 进入服务详情页 → Networking
- 在 Public 下生成域名或绑定自定义域名
得到地址后,形如:https://your-app.zeabur.app。后续所有操作都在这个页面完成。
端口通常不用手动设置。Zeabur 会注入
PORT环境变量,项目默认可直接适配。
3. 在线提取 Token(关键流程)
这里是最容易误判“失败”的部分。
OpenAI 对该 Client 的回调地址有限制:
http://localhost:1455/auth/callback。
所以即使你部署在公网,授权完成后浏览器依然会跳去 localhost。
3.1 生成授权链接
- 打开你的 Zeabur 域名
- 点击页面里的“生成链接”
- 复制生成好的授权 URL
3.2 完成 OpenAI 授权
把链接粘到新标签页打开,按提示登录并同意授权。
3.3 看到 localhost 报错别慌
授权完成后,浏览器会跳到 http://localhost:1455/...。你大概率会看到“无法访问此网站”或“连接被拒绝”。
这是正常现象,不代表失败。
你要做的是:
- 直接复制地址栏中的完整 URL(必须包含
?code=...参数)
3.4 回到 Zeabur 页面兑换 Token
- 回到刚才部署服务的网页
- 把复制的 localhost 完整回调链接粘贴到输入框
- 点击“获取 Token”
成功后页面会返回 Token 信息(包括 refresh_token、access_token、expires_in 等字段)。
4. 本地运行(可选)
npm installnpm start默认访问:http://localhost:3000
5. API 调用示例
5.1 生成授权链接
POST /api/generate-auth-url
返回示例:
{ "success": true, "data": { "authUrl": "...", "sessionId": "..." }}5.2 兑换 Token
POST /api/exchange-code
请求体:
{ "code": "...", "sessionId": "..."}返回示例:
{ "success": true, "data": { "refresh_token": "...", "access_token": "...", "expires_in": 2592000, "user_email": "user@..." }}6. 最后提醒
refresh_token是高权限凭证,不要截图外传、不要提交到仓库。- 这套流程的核心就一句话:授权后复制 localhost 回调 URL,再粘回页面兑换 Token。
如果你第一次做 OAuth2,这个“看似报错、其实正常”的回调步骤最容易卡住。记住这点,整个流程就会顺很多。
部分内容可能已过时