2026-08-11权限与同意平台更新 开发人员
上次更新:2026年8月12日
2026-08-11权限与同意平台更新
更新日期:2026年8月11日
通行账户与开发者门户已上线本轮「权限与同意」能力调整。本文说明更新了什么、弃用了什么、兼容什么,以及你需要做什么。
兼容提示
- 已上线的旧客户端无需因本次更新而改代码或重新发布。
- 新接入或新开发的客户端请以最新开发者文档为准。
摘要
- 可在开发者门户增加或减少标识符权限(不必因改权限重建客户端)。
- 将权限设为强制(必选)时,须填写对用户可见的理由,并配置隐私政策链接。
- 用户每次登录均须在授权页显式确认;不再因「此前已授权相同权限」而静默跳过。
- 权限有增减时,用户会清楚看到新增 / 不再申请 / 仍保留,并对新增可选权限作出选择。
- 旧应用即使改不了登录代码,也能在门户改权限后让用户完成重新确认(见下文「旧应用如何兼容」)。
详细行为见同目录上级的《权限与同意》《注册与配置》。
更新了什么
开发者门户
- 编辑标识符向导包含「功能」步,可调整必选 / 可选
scope。 email与资料细项(如name、preferred_username、picture等)均可设为:不申请 / 可选 / 必选。- 设为必选时须填写向用户说明的理由(展示在授权页对应权限旁)。
- 存在除
openid外的强制权限时,隐私政策链接必填。 - API:创建 / 更新客户端可提交
requiredScopes、optionalScopes、scopeReasons、privacyPolicyUri;更新会持久化权限变更。
用户授权页
- 每次登录进入授权 / 确认页(不再静默复用同意)。
- 权限相对该用户未变:展示「确认登录」与已授权摘要。
- 权限有增减:展示「权限已变更」,分区列出新增必需 / 新增可选(含理由)、不再申请、仍保留的授权;确认后收缩已移除权限。
- 首次授权:按必需 / 可选分区;强制项旁显示开发者填写的理由。
文档
- 《权限与同意》《注册与配置》《接入概述》及 Python 示例等已同步上述行为。
- 新客户端接入说明以这些最新文档为准。
旧应用如何兼容(白话说明)
OAuth 登录时,应用会打开通行账户,并在地址里带上本次要申请的权限,例如:
scope=openid email
这串文字写在你的应用代码里。有些已经上线的应用短期内改不了这串文字(发版周期长、无人维护等)。
问题会出在哪
若你后来在开发者门户把「用户名」设成必选,但旧应用仍只传 openid email:
- 按原始协议,授权页和令牌都只会处理请求里写出的权限;
- 用户看不到「用户名」,令牌里也不会有「用户名」;
- 等于门户改了,旧应用却拿不到。
服务端做了什么
通行账户在处理登录请求时,会自动补全门户里登记的权限,旧应用不用改代码:
-
全部必选都会并进来
门户标成必选的权限(例如新加强制的「用户名」),即使用户应用地址里没写,也会出现在本次授权里,用户必须确认。 -
已登录用户还会看到「新增的可选」
若你在门户新增了可选权限(例如「头像」),而该用户以前没授权过这项,下次登录确认页会列出它,供用户勾选或取消。
用户以前已经授权过的可选,不会再当成「新增」刷一遍。 -
还没登录时
先保证必选并入;用户登录完成回到授权流程后,再补上新增可选。
举例
| 门户当前配置 | 旧应用仍请求 | 用户实际会在授权页看到 |
|---|---|---|
必选:openid、email、用户名;可选:头像(新加) | openid email | 必选含用户名;若尚未授权过头像,还会出现可选头像 |
| 同上,用户以前已授权过头像 | openid email | 必选含用户名;头像出现在「仍保留」,不再当作新增 |
结论:旧应用可以暂时不改代码;你在门户改权限后,用户下次登录仍能完成确认。新应用仍建议在请求里写清所需 scope,并与门户登记一致。
弃用了什么
下列行为或约定不再作为产品保证,请勿在新开发中依赖:
| 已弃用 | 说明 |
|---|---|
| 静默跳过授权页 | 同一账号已向同一客户端授予全部请求权限时,服务端不再跳过同意 / 确认页直接发码 |
依赖省略 prompt=consent 实现「无确认登录」 | 生产环境即使不发送 prompt=consent,用户仍须每次在授权页确认;该参数仍可发送,但不再是强制展示确认页的必要条件 |
| 「资料细项只能可选、不可强制」 | 资料细项在提供理由与隐私政策后可以设为必选 |
| 「改权限须删除并重建标识符」 | 可在门户编辑权限;客户端类型(机密 / 非机密)仍不可互转 |
未弃用:profile / 历史 name 的展开兼容、PKCE 强制、pairwise sub 等既有协议行为。
兼容什么
- 已上线旧客户端:无需修改登录请求、无需改
prompt、无需重新发版;门户改权限与强制确认页由通行账户侧处理(见上文「旧应用如何兼容」)。 - 旧 scope 写法:仍可传
profile或历史name,服务端展开为细项(见《权限与同意》)。 - 标识符身份:
client_id/ 密钥与客户端类型不因本次更新而失效;类型仍不可互转。 - 令牌与 UserInfo:未授权字段仍为默认占位值;请以令牌响应中的
scope为准解释声明。
建议你做什么
- 维护中的旧应用:可暂不改代码;若在门户增减权限或新增强制项,请补全理由与隐私政策,并预期用户下次登录会看到确认或变更对照。
- 新接入 / 新开发:按最新《注册与配置》《权限与同意》配置 scope;登录 UX 按「每次会出现授权确认页」设计;不要假设静默授权。
- 需要强制索取某权限时:写清对用户可见的用途说明,并提供可打开的隐私政策链接。
相关链接
- 开发者门户:https://develop.swaymoon.com/
- 同目录上级:《权限与同意》《注册与配置》《接入概述》