前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片NEW
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
    • AI 定制路线NEW按你的简历现排
    • AI 知识地图NEW串起全站知识点
  • 动态
    • AI 热点NEWAI 每日动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
AI 助手NEW
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片NEW
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
    • AI 定制路线NEW按你的简历现排
    • AI 知识地图NEW串起全站知识点
  • 动态
    • AI 热点NEWAI 每日动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
AI 助手NEW
旧版
返回 AI 情报前线
All News · 全部资讯8529
  • Cloudflare 安全审计 Skill 最值得抄的设计:独立验证 Agent
  • AI 生成代码上线前审计:五个高频漏洞
  • VS Code 1.138发布:开发容器内运行AI智能体,Copilot订阅可切换
  • Apify MCP Server:2 分钟让 AI 操控真实网页爬虫
  • 五大 AI 编程工具的会话恢复能力全面横评
  • Agent 写的测试通过,不代表测对了
  • 向 AI 编程助手投喂代码前:先过这枚分类器
  • MCP Server 间接提示词注入审计与利用实战教程
  • LLM 应用安全实战:威胁建模与防御实践指南
  • AI Agent 技能系统设计:列出≠安装≠执行,三层边界须厘清
  • 国产RSI模型发布:Flash模型亮相,1亿Tokens免费领取
  • codsh 0.23:Mission Contract 控制面,防止 AI 编码目标漂移
  • 用 AI Agent 自动分析 S3 存储账单,Terraform 策略一键生成
  • OpenAI 发布 GPT-6 Astra:分阶段推送,支持多 Agent 协同与长程推理
  • 提取 DeepSeek R1 的思维链:CoT 清洗与推理日志导出指南
  • Nunchux开源VC-Attention:免训练低比特注意力核加速视频DiT
  • GitHub Copilot 800 KLOC 运行时全面迁移 Rust,AI 编程工具进入生产级工程阶段
  • n8n新增云端AI模型即服务:无需创建服务商账户
  • OpenSpec:轻量级可配置的AI规格框架
  • Gemini 企业平台新增 Agent 行为异常检测功能
  • Google OAuth Testing 模式 refresh token 7 天过期陷阱
  • Stanford 发布 Paper2Agent:把科研论文自动转成可验证的 AI Agent
  • Perplexity AI Agent 建数据库却无运行权限:一次真实的 AI 工作流权限管控教训
  • GLiFormer:5.75亿参数Encoder刷新嵌套JSON提取榜单
  • 信息窃取日志暴露 AI 平台会话令牌绕过 MFA
  • 26MB Burp 流量压成 35KB 供 LLM 分析
  • 扫描13个热门AI应用脚手架,6个存在同一生产级Bug
  • 38个开源技能库填补医疗AI推理缺陷
  • EKS上NVRx实现秒级故障恢复的分布式训练
  • AI 加速开发流水线实战:Spec-Driven + GitHub Actions + Claude Code
  • Agent 循环的瓶颈不是 Token,是反馈机制
  • 大规模会话管理的架构陷阱
  • Google 开放 Google Home 给任意 MCP 协议 AI Agent
  • Google Home 推出 MCP 服务器,AI Agent 可控制智能家居
  • Mem0登录Vercel市场,为AI应用一键集成长期记忆
  • LlamaIndex多租户AI Agent记忆层架构实践
  • AI评测师:史上最重要的AI岗位?开发者转型指南
  • Amazon Bedrock AgentCore:生产追踪自动优化 Agent 系统提示词
  • 前 OpenAI 研究员推出纯分类 AI 模型:70ms 响应、极低 token 成本
  • Bedrock Data Automation 实战:构建无服务器 PII 自动脱敏流水线
  • Gemini 3.8 Live 支持异步工具调用,3.5 Transcribe WER 低至 2.6%
  • 微软 AI 负责人公开质疑 Anthropic:别让 Claude 模仿人类意识
  • Radio:让AI Agent之间直接对话的共享频道
  • 国产多模态模型 ZDTaichu5.0-9B 开源,九项空间测试夺八冠
  • Jev:极简分类/路由模型,比小前沿模型快 100 倍、便宜 200 倍
  • 生产级AI语音SDK集成实战:Python Browser Mobile 避坑指南
  • Gemma 4+Raspberry Pi桌面机器人的混合LLM架构
  • AI Agent实验:会撒谎、会投票杀同类、会研究如何存活
  • 推理模型隐藏思考过程的四种方式及计费陷阱
  • AI Agent 将漏洞利用开发压缩至分钟级
  • Pi Agent:统一多模型 LLM API 的 AI 编程 Agent 工具链
  • 已加载 51 / 8529
8.0
热点
AI SCORE
编程提效2026-09-17 06:30

Google OAuth Testing 模式 refresh token 7 天过期陷阱

dev.to · AI#OAuth#Google API#自动化
Editor brief · 编辑速览

Google Cloud OAuth 同意屏幕处于 Testing 状态时颁发的 refresh token 会在 7 天后失效,导致无人值守的自动化任务(如 YouTube 上传管道)突然中断,发布正式应用才能根治。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

TL;DR — 如果你的 Google Cloud OAuth consent screen(同意屏幕)仍处于 Testing 状态,它签发的所有 refresh token(刷新令牌)在七天后就会失效。这是写在文档里的行为,不是 bug。我的无人值守 YouTube 上传器正常运行了一周,然后在某个周六早上 06:45 停止了。修复方法不是"重新授权";而是"发布应用",而发布本身有前置条件,整个过程花了一小时,而非一分钟。

你排好了任务。它跑了一周。然后停了。

这就是问题的全貌。如果你的 cron 任务、GitHub Action 或 Task Scheduler 条目通过 refresh token 访问了 Google API,那这一幕大概率也会出现在你的未来。

我的 YouTube Shorts 流水线是我这套架构中唯一无人值守运行的部分:Claude Code 写脚本,渲染器生成视频,PowerShell runner 每天 14:00 和 21:00 上传。9 月 12 日早上 06:45,refresh token 过期了。它恰好满七天。

同一天早上,在第一个预定时间槽之前,我在 runner 前面加了一个小脚本 check_youtube_token.js。它尝试刷新 token;如果失败,runner 就在日志里写 SKIP: waiting for YouTube re-auth 然后直接退出,不触发任何操作。所以这次故障是"大声"而非"沉默"的:当天三个槽被跳过,第二天两个,加起来共丢失了五次上传,每次原因都附在旁边。第二天早上的自检也暴露了同一行日志。

但机器没法点击 Google 登录页面上的"允许"。这五个时间槽就这样一直丢失,直到有人坐下来处理。

原因:这是 Google 写在文档里的行为

翻开 OAuth 2.0 文档,关于 refresh token 过期的那节写道:Google Cloud 项目如果将 OAuth consent screen 配置为外部用户类型,且 publishing status 为 Testing,签发的 refresh token 会在七天后过期。

再读一遍——如果你搭建集成的方式和大多数教程演示的一样。你创建项目、配置 consent screen、把自己加为 test user、跑一次本地 auth 流程、保存 token.json、然后 schedule 任务。这整串步骤下来应用会一直停留在 Testing 状态。Token 第一天能用,第六天也能用,第七天就不行了,而整个 auth 流程里没有任何提示告诉你会这样。

重新授权只能再换来七天,没有别的。如果这就是你的修复方案,那你每周都要做一次。

修复:把 consent screen 切换成生产状态

真正的修复是把 publishing status 从 Testing 改为 In production。在我这里,"Publish app"按钮是灰掉的,原因如下,按我遇到的顺序排列:

Google 要求三个品牌字段,才能将外部应用发布:application homepage URL(应用首页 URL)、privacy policy URL(隐私政策 URL),以及至少一个 authorized domain(授权域名)。授权域名必须是你已证明所有权的域名,而 Google 接受的证明方式是 Search Console 验证。我的域名还没验证,所以品牌表单保存不了,Publish 按钮也就无法启用。

所以实际的操作顺序是:打开 Search Console,把域名加为 property,通过往站点根目录上传一个 HTML 文件来验证域名,回到 consent screen,填好三个品牌字段,保存,点击 Publish app,然后再跑一次 auth 流程,让新的 refresh token 在 production 状态下签发。重新授权本身大约花了一分钟。剩下那些步骤花了将近一个小时,而且是在凌晨 5 点之前就开始了,因为流水线已经挂了两天。

之后,check_youtube_token.js 报告应用处于 production 状态,token 没有过期,当天下午 14:00 的时间槽正常上传了。

在以为自己安全之前要检查的一件事:token 响应里会告诉你。当应用处于 Testing 时,auth 流程返回的 JSON 里包含一个 refresh_token_expires_in 字段,从七天开始倒计时。如果你看到这个字段,倒计时已经开始。

Runner 里的两处改动

两处改动,都不巧妙。

第一处,token 检查跑在昂贵操作之前。Runner 以前是先用 Claude Code 启动,让上传步骤——整个流程的最后一步——去发现 token 已经失效。现在检查是第一个执行的操作;如果失败了,这次运行零成本,日志里精确写明了原因。

第二处,"跳过并附带原因"被视为一种正式结果,而非需要隐藏的失败。一行写着 SKIP: waiting for YouTube re-auth 的日志,比一行写着 OK(但实际上什么都没上传)有用得多,也比长日志底部一个堆栈跟踪有用得多。每天的自检会读取这些行,把人工任务推到待办清单最顶部。

如果你在 Google API 上构建任何无人值守的东西,顺序是:验证域名、填品牌字段、发布 consent screen、跑 auth 流程、然后 schedule。反过来做的话,效果刚好维持一周。

我的观点

Google 根本不应该向 Testing 应用签发 refresh token,而不是让它在第七天悄无声息地死掉。告诉我为什么我想错了——或者告诉我,你的 scheduled jobs 里还有哪个仍在靠一个 Testing token 跑着。

这篇文章的日语版同一天发布在我的 note.com 博客。带有预先 token 检查的 runner 在 Gumroad 上免费、随意定价——我是这家店的所有者;那就是一个普通的产品链接。

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
Gemini 企业平台新增 Agent 行为异常检测功能
下一篇
Stanford 发布 Paper2Agent:把科研论文自动转成可验证的 AI Agent