2026-08-11 權限與同意平台更新 開發人員
上次更新:2026年8月15日
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/
- 同目錄上級:《權限與同意》《註冊與設定》《接入概述》