早上好,我是まさきん。
Google OAuth 的发布状态如果是“测试中”,刷新令牌会在7天后失效。我也是在一个导入健康数据的个人工具上注意到这个期限的。下面结合官方资料,整理发布到正式环境的步骤,以及 Gmail 受限范围的审核。
※以下为文章发布时的信息,最新条件请以官方网站为准。
- 发布状态为“测试中”且面向外部的应用,刷新令牌会在7天后失效
- 即使是个人工具,只要发布到“正式环境”,就不再受7天期限的限制
- 发布需要首页和隐私政策的 URL,只填联系邮箱是不够的
- 敏感范围和受限范围,即使在正式环境,审核通过前也会显示未经验证应用的警告
- 除了7天之外,还有6个月未使用、令牌数量上限等失效条件
7天失效的机制
先说结论。Google 官方文档里有这样一段说明:
面向外部用户、发布状态为“测试中”的项目,在此签发的刷新令牌会在7天后失效。
也有例外:请求的范围只有姓名、邮箱地址和个人资料的情况。具体来说,就是限于 userinfo.email、userinfo.profile、openid 这几个范围。如果只是用 Google 登录的应用,就不受7天期限的限制。
反过来说,读取 Gmail 或日历数据的应用都在此列,健康类数据也一样。哪怕是个人用的脚本,只要用户类型是外部,待遇就相同。
“测试中”和“正式环境”的区别
发布状态可以在 Google Auth Platform 的“目标对象”页面查看,相当于以前的“OAuth 同意屏幕”。两种状态的区别整理如下:
| 项目 | 测试中(Testing) | 正式环境(In production) |
|---|---|---|
| 可使用的人 | 仅限已登记的测试用户 | 所有拥有 Google 账号的人 |
| 测试用户上限 | 最多100人 | 无 |
| 授权有效期 | 授权后7天失效 | 无7天期限 |
| 刷新令牌 | 7天失效 | 在触发其他失效条件前一直有效 |
| 授权前的警告 | 显示测试访问警告 | 敏感范围在审核前显示警告 |
| 审核 | 不适用 | 视范围而定,可能需要 |
测试中只是开发阶段的状态。只有被加为测试用户的人才能授权,而且授权7天后就会失效。
而正式环境是任何人都能授权的状态。对每天自动运行的个人工具来说,正式环境可能更适合长期使用。
我的工具遇到的情况
我的工具用的是 Google 的 Health 系列 API,项目的发布状态一直是“测试中”。
所以手上的刷新令牌从签发起7天后就会失效。一旦失效,自动导入就会停掉。于是我决定把品牌信息填好,发布到“正式环境”。
发布到正式环境的步骤
结合官方帮助的流程和我实际走过的顺序,整理如下:
- 打开 Google Cloud 控制台,确认页面顶部选中的项目
- 打开 Google Auth Platform 的“品牌塑造”
- 确认应用名称和用户支持邮箱
- 填入应用首页和隐私政策的 URL
- 把这些 URL 的域名添加到已获授权的网域
- 填入开发者联系邮箱并保存
- 在“目标对象”页面点击“发布应用”,在确认页面继续
- 确认发布状态已变为“正式环境”
- 在工具这边重新授权一次,重新获取刷新令牌
官方帮助建议先登记已获授权的网域。在填首页等 URL 之前就先加好,可以少走回头路。
途中卡住的两件事
搞错了项目
第一个坑出在很不起眼的地方:我打开的 Google Cloud 控制台是另一个项目,是为博客访问统计建的那个。
Google Cloud 控制台会记住上次打开的项目。所以不留神直接打开,就可能身处别的项目里。操作前先看一眼页面顶部的项目名,就能避免这个问题。
个人手里项目一多,名字往往会越来越像。起一个一眼能看出用途的名字,也是个不起眼但很管用的办法。
只填联系邮箱无法发布
第二个问题是发布按钮一直是灰的。一开始我只填了联系邮箱。
发布需要应用首页和隐私政策的 URL。官方帮助也写明,面向外部的正式应用必须提供这些链接。缺少链接的话,连审核都提交不了。
发布所需的信息
根据官方帮助,把品牌塑造页面要求填写的项目整理如下:
| 项目 | 内容 | 官方帮助中的说明 |
|---|---|---|
| 应用名称 | 显示在同意屏幕上的名字 | 不能使用容易与 Google 商标混淆的名称 |
| 用户支持邮箱 | 用户的咨询联系方式 | 本人的邮箱或本人管理的群组 |
| 应用首页 | 介绍应用的页面 | 面向外部的正式应用必填 |
| 隐私政策 | 说明数据处理方式的页面 | 面向外部的正式应用必填 |
| 服务条款 | 应用的条款页面 | 选填 |
| 已获授权的网域 | 上述 URL 的域名 | 在填写 URL 之前登记 |
| 开发者联系方式 | Google 的通知接收地址 | 建议保持最新 |
| 徽标 | 同意屏幕上的图标 | 正式环境中审核通过后显示 |
徽标是选填的。不过面向外部的正式应用一旦上传徽标,就需要审核。个人工具的话,留空会省事不少。
首页和隐私政策用什么
我把自己博客的页面用作首页和隐私政策,并在已获授权的网域里添加了 otokuken.com。
官方帮助里也写了接受审核时的要求:首页要放在本人拥有并已验证的域名下;隐私政策要和首页在同一个域名下,并从首页链接过去;政策里要写明如何处理 Google 用户数据,等等。
如果不接受审核,可能不必这么严格也能发布。但以后也许会需要审核,一开始就按要求准备会更安心。
部分范围需要审核
发布到正式环境,也不代表一切都不受限制了。关键在于范围的分类。
| 范围分类 | 审核 | 审核前的表现 |
|---|---|---|
| 非敏感 | 不需要(若要显示名称和徽标则需品牌审核) | 无警告,可直接授权 |
| 敏感 | 需要 | 显示未经验证应用的警告 |
| 受限 | 需要,另需每年一次安全评估 | 显示未经验证应用的警告 |
在 Cloud 控制台添加范围时,会自动显示其分类,可以在那里确认自己的应用属于哪一类。
另一方面,个人用应用有例外。官方帮助说明,用户不到100人的个人用应用,无需审核即可继续使用。这种情况下,用户登录时需要点过未经验证应用的警告继续操作。
未经验证应用的警告和用户上限
在审核前请求敏感范围,同意屏幕之前会弹出警告,大意是“此应用未经 Google 验证”。
另外还有用户数量上限。显示未经验证应用页面的应用,新用户累计最多100人。官方写明这个上限适用于项目的整个生命周期,而且无法重置。
如果只是自己用的工具,这个上限基本不会成问题。不过如果还要给家人或朋友用,就得留意一下人数。
既然在盘点会定期失效、需要续期的东西,不如顺便把每月的通信费也重新看一看,整体固定支出也许能轻一点。
7天之外令牌失效的条件
即使切换到正式环境,刷新令牌也不是永久有效的。官方文档中列出的失效条件整理如下:
| 条件 | 说明 |
|---|---|
| 用户撤销了访问权限 | 在 Google 账号一侧解除了应用的连接 |
| 6个月未使用 | 刷新令牌连续6个月没有使用 |
| 修改了密码 | 令牌包含 Gmail 范围时 |
| 令牌数量上限 | 每个账号、每个客户端 ID 最多100个 |
| 限时授权 | 授权时设定了期限,且期限已过 |
| 管理员限制 | Workspace 管理员限制了相关服务 |
| 会话控制 | Google Cloud 组织设定了会话时长 |
尤其要注意令牌数量上限。达到上限后,最旧的令牌会在没有任何提示的情况下失效。如果反复重新授权做测试,正式在用的令牌可能就被挤掉了。
另外还有整体上限,官方给出的规避办法是把每个账号授权的客户端控制在15到20个左右。
重新获取令牌
发布到正式环境后,下一步就是重新获取令牌。官方写明,测试中获得的授权会在授权后7天失效。所以发布之后,需要本人再授权一次。
我这边也还没重新获取,打算运行工具的认证流程,在浏览器里重新授权。
重新获取后,最好别再用旧令牌。把新令牌写进保存位置,旧的删掉。保存的地方一多,很可能就分不清哪个还有效了。
常见的失误和坑
把前面讲的内容,按常见失误归纳一下:
| 失误 | 会发生什么 | 预防办法 |
|---|---|---|
| 在别的项目里操作 | 设置没有生效 | 操作前先看项目名 |
| 没填 URL 就想发布 | 发布按钮点不了 | 先准备好首页和隐私政策 |
| 已获授权的网域留到最后 | 登记 URL 时卡住 | 先添加域名 |
| 发布了就以为万事大吉 | 旧令牌7天后失效 | 发布后重新授权 |
| 反复重新授权 | 旧令牌在无提示的情况下失效 | 只在必要时重新获取 |
| 半年没运行 | 令牌失效 | 让它定期运行 |
个人工具停了,也没有人会来告诉你。所以把它做成失效时能通过报错察觉的样子,我觉得也很重要。
因免费额度上限而停摆的话题,我在Cloudflare Workers 免费版触及 Cron Triggers 上限时的应对办法里也整理过。个人自动化最大的弱点,可能就是这种“悄无声息地停掉”。
开始之前要确认的事
- 控制台里打开的是否是目标项目
- 用户类型是外部还是内部
- 当前发布状态是测试中还是正式环境
- 所用范围属于非敏感、敏感、受限中的哪一类
- 能否准备好首页和隐私政策的 URL
- 是否已把这些 URL 的域名添加到已获授权的网域
- 开发者联系邮箱是否是最新的
- 发布后是否有时间重新授权
官方写明,测试中获得的授权会在授权后7天失效。稳妥起见,应当认为即使发布到正式环境,这个期限也不会延长。发布后请重新授权,重新获取令牌。
自动化的整体情况,我在让 AI 趁早上出门准备时生成一页“今日简报”里也写过。这些机制的背后,其实都是令牌在支撑。
常见问题
Q. 一直处于测试中,令牌多久会失效?
面向外部用户、处于测试中的项目,令牌7天后失效,从授权时开始算。如果范围只有姓名、邮箱和个人资料,则不受这个期限限制。
Q. 只是自己用,也可以发布到正式环境吗?
可以。官方帮助也说明,用户不到100人的个人用应用,无需审核即可继续使用。不过敏感范围会显示未经验证应用的警告。
Q. 为什么发布按钮点不了?
可能是品牌塑造里缺了必填项。面向外部的正式应用需要首页和隐私政策的 URL。也请确认是否登记了已获授权的网域。
Q. 发布之后,现在的令牌还能继续用吗?
官方写明,测试中获得的授权会在授权后7天失效。所以发布后重新授权、重新获取令牌最稳妥。重新获取需要本人操作。
Q. 一定要接受审核吗?
如果面向公众使用敏感或受限范围,就需要审核。个人用且不到100人的话,有无需审核即可继续使用的例外。受限范围还要求每年一次安全评估。
Q. 测试用户最多能登记多少人?
测试中的项目,测试用户最多100人。一旦添加,就会占用相应的名额。
Q. 正式环境下令牌就能一直用吗?
不是一直。6个月未使用,或用户撤销了访问权限时都会失效。每个账号、每个客户端 ID 也有100个的上限。
Q. 徽标和应用名称会显示在同意屏幕上吗?
官方帮助写明,显示应用名称和徽标需要审核。审核前显示的是应用的域名。个人工具的话,不上传徽标会省事一些。
参考的官方资料
- 使用 OAuth 2.0 访问 Google API(Google for Developers)
- Manage App Audience(Google Cloud 帮助)
- Manage OAuth App Branding(Google Cloud 帮助)
- Get started with the Google Auth Platform(Google Cloud 帮助)
- OAuth App Verification Help Center(Google Cloud 帮助)
- Verification requirements(Google Cloud 帮助)
- When is verification not needed(Google Cloud 帮助)
- Unverified apps(Google Cloud 帮助)
- Google API 的 OAuth 2.0 范围(Google for Developers)
- Google API 服务用户数据政策
总结
刷新令牌7天就失效,原因在于发布状态是“测试中”。即使是个人工具,发布到正式环境后这个期限就解除了。
需要准备的是首页和隐私政策的 URL,再加上登记已获授权的网域,另外就是小心别搞错项目。接下来我要去重新获取令牌了。
如果你也有自动运行的机制,不妨至少去看一眼它的发布状态。
本文包含联盟营销广告。如果您通过本站链接申请相关商品或服务,我们可能会从合作企业获得报酬。此外,运营者是乐天集团的员工,也可能通过员工推荐计划获得报酬。文章内容与评价均基于运营者的真实体验与调查完成,与是否存在广告无关,但请您在阅读前了解上述关系。详情请参阅免责声明与联盟营销说明。 免责声明与联盟营销说明
本文包含机器翻译内容。正式条件请以乐天移动官方网站的多语言页面为准。
如果您对乐天移动的通信区域·信号状况有疑问,可以通过官方的 电波改善调查申请表 进行咨询。