帳戶連結功能可讓 Google 帳戶持有人快速、順暢且安全地連結至您的服務。您可以選擇導入 Google 帳戶連結功能,將平台上的使用者資料分享給 Google 應用程式和服務。
安全的 OAuth 2.0 通訊協定可讓您安全地將使用者的 Google 帳戶連結至平台上的帳戶,進而授予 Google 應用程式和裝置存取您服務的權限。
使用者可以連結或取消連結帳戶,也可以選擇在您的平台上透過 Google 帳戶連結功能建立新帳戶。
用途
以下列舉幾個導入 Google 帳戶連結的原因:
將平台上的使用者資料與 Google 應用程式和服務共用。
使用 Google TV 播放影片和電影內容。
使用 Google Home 應用程式和 Google 助理管理及控制 Google 智慧家庭連結裝置,例如「Google 助理,開燈」。
使用對話動作建立使用者自訂的 Google 助理體驗和功能,例如「Ok Google,請幫我訂購 Starbucks 的常用商品」。
讓使用者將 Google 帳戶連結至獎勵合作夥伴帳戶後,在 YouTube 上觀看符合資格的直播影片,即可獲得獎勵。
在註冊期間,使用Google 帳戶個人資料中經過同意共用的資料,預先填入新帳戶。
支援的功能
Google 帳戶連結功能支援下列功能:
使用 OAuth 隱含連結流程,快速輕鬆地分享資料。
使用 OAuth 連結授權碼流程,進一步提升安全性。
讓現有使用者登入您的平台,或讓新使用者透過 Google 驗證註冊,取得使用者同意,並透過簡化連結功能安全地分享資料。
使用應用程式翻轉功能可提升便利性。只要在可信任的 Google 應用程式中輕輕一按,即可安全地開啟已驗證的 Android 或 iOS 應用程式,並授予使用者同意權,以及連結帳戶。
定義自訂權限範圍,只分享必要資料,提升使用者隱私權;明確定義資料使用方式,提升使用者信任感。
您可以取消連結帳戶,藉此撤銷對平台上資料和服務的存取權。實作選用的權杖撤銷端點,可讓您與 Google 啟動的事件保持同步,而跨帳戶保護功能 (RISC) 則可讓您通知 Google 平台上發生的任何取消連結事件。
帳戶連結流程
有 3 種 Google 帳戶連結流程,全都是以 OAuth 為基礎,需要您管理或控管符合 OAuth 2.0 標準的授權和符記交換端點。
在連結過程中,您會先取得帳戶持有人連結帳戶及分享資料的同意聲明,再向 Google 發出個別 Google 帳戶的存取權權杖。
OAuth 連結 (「Web OAuth」)
這是基本 OAuth 流程,會將使用者導向您的網站進行連結。系統會將使用者重新導向至您的網站,讓他們登入帳戶。登入後,使用者同意將個人資料提供給 Google。此時,使用者的 Google 帳戶和您的服務就會連結。
OAuth 連結支援授權碼和隱含 OAuth 流程。您的服務必須代管符合 OAuth 2.0 標準的授權端點,以便處理隱含流程,且必須在使用授權碼流程時,同時公開授權和權杖交換端點。
圖 1. 透過網路 OAuth 在使用者手機上進行帳戶連結
以 OAuth 為基礎的應用程式快速連結 (「應用程式快速連結」)
將使用者導向應用程式進行連結的 OAuth 流程。
以 OAuth 為基礎的應用程式翻轉連結功能會引導使用者在您已驗證的 Android 或 iOS 行動應用程式和 Google 平台之間移動,以便查看建議的資料存取權變更,並授權將他們在您平台上的帳戶與 Google 帳戶連結。如要啟用「應用程式翻轉」功能,您的服務必須支援 OAuth 連結或以 OAuth 為基礎的 Google 登入連結,並使用 授權碼流程。
運作方式:
Google 應用程式會檢查使用者裝置上是否安裝您的應用程式:
- 如果找到應用程式,使用者就會「翻轉」您的應用程式。您的應用程式會向使用者收集同意聲明,將帳戶與 Google 連結,然後返回 Google 途徑。
- 如果在應用程式翻轉連結程序中找不到應用程式,或發生錯誤,系統會將使用者重新導向至簡化或網頁 OAuth 流程。
圖 2. 使用 App Flip 在使用者的手機上連結帳戶
以 OAuth 為基礎的簡化連結 (「簡化」)
以 OAuth 為基礎的 Google 登入功能簡化連結會在 OAuth 連結上加入 Google 登入功能,讓使用者不必離開 Google 介面,即可完成連結程序,進而減少使用者流失和流失率。以 OAuth 為基礎的簡化連結功能結合了 Google 登入和 OAuth 連結功能,可提供最佳使用者體驗,提供流暢的登入、建立帳戶和帳戶連結功能。您的服務必須支援符合 OAuth 2.0 標準的授權和憑證交換端點。此外,您的權杖交換端點必須支援 JSON Web Token (JWT) 斷言,並實作 check
、create
和 get
意圖。
運作方式:
Google 會驗證使用者帳戶,並將以下資訊傳遞給您:
- 如果資料庫中已有使用者的帳戶,表示使用者已成功將自己的 Google 帳戶連結至貴機構服務中的帳戶。
- 如果資料庫中沒有使用者的帳戶,使用者可以使用 Google 提供的資訊建立新的第三方帳戶,包括:電子郵件、姓名和個人資料相片,或是選擇登入並連結其他電子郵件地址 (這需要使用者透過 Web OAuth 登入您的服務)。
圖 3. 使用簡化連結功能在使用者手機上連結帳戶
您應使用哪個流程?
建議您實作所有流程,確保使用者享有最佳連結體驗。簡化和應用程式翻轉流程可減少連結阻力,因為使用者只需幾個步驟就能完成連結程序。網頁 OAuth 連結的難度最低,是您開始使用連結流程的好地方,之後再加入其他連結流程。
使用符記
Google 帳戶連結是以 OAuth 2.0 業界標準為基礎。
取得帳戶持有人同意連結帳戶和分享資料後,您就可以針對個別 Google 帳戶向 Google 發出存取權權杖。
令牌类型
OAuth 2.0 使用称为令牌的字符串在用户代理、客户端应用和 OAuth 2.0 服务器之间进行通信。
在账号关联期间,您可以使用三种类型的 OAuth 2.0 令牌:
授权代码。一种短期有效的令牌,可用于交换访问令牌和刷新令牌。出于安全考虑,Google 会调用您的授权端点以获取一次性或非常短效的代码。
访问令牌。授予持有者对资源的访问权限的令牌。为限制因丢失此令牌而导致的泄露风险,此令牌的有效期有限,通常会在大约一小时后过期。
刷新令牌。一个长期有效的令牌,在访问令牌到期时可以交换为新的访问令牌。如果您的服务与 Google 集成,则此令牌由 Google 专门存储和使用。Google 会调用您的令牌交换端点,以便将刷新令牌换成访问令牌,后者会用于访问用户数据。
令牌处理
在使用令牌时,分片环境和客户端-服务器交换中的竞态条件可能会导致复杂的时间安排和错误处理场景。例如:
- 您收到新的访问令牌请求,并发出新的访问令牌。同时,您会收到使用上一个未过期的访问令牌访问服务资源的请求。
- Google 尚未收到(或从未收到)您的刷新令牌回复。与此同时,之前有效的刷新令牌会在 Google 发出的请求中使用。
由于集群中运行的异步服务、网络行为或其他原因,请求和响应可能会以任何顺序到达,也可能根本不会到达。
我们无法保证您和 Google 的令牌处理系统内部以及它们之间的共享状态是立即且完全一致的。在短时间内,多个有效、未过期的令牌可以在系统内部或不同系统之间共存。为了尽可能减少对用户的负面影响,我们建议您执行以下操作:
- 接受未过期的访问令牌,即使已发出较新的令牌也是如此。
- 使用刷新令牌轮替的替代方案。
- 支持多个同时有效的访问令牌和刷新令牌。出于安全考虑,您应限制令牌数量和令牌生命周期。
维护和中断处理
在维护或意外停机期间,Google 可能无法调用您的授权或令牌交换端点来获取访问令牌和刷新令牌。
您的端点应返回 503
错误代码和空正文。在这种情况下,Google 会在有限的时间内重试失败的令牌交换请求。只要 Google 稍后能够获取刷新令牌和访问令牌,用户就不会看到失败的请求。
如果由用户发起,访问令牌请求失败会导致可见错误。如果使用隐式 OAuth 2.0 流程,用户将需要重试关联失败。
建议
您可以通过多种方法最大限度地降低维护影响。请考虑以下可选方案:
维护现有服务,并将有限数量的请求路由到新更新的服务。请仅在确认预期功能后迁移所有请求。
减少维护期间令牌请求的数量:
将维护期限制为短于访问令牌有效期。
暂时延长访问令牌生命周期:
- 将令牌生命周期延长到超过维护期。
- 等待访问令牌生命周期的两倍时间,以便用户将短时有效的令牌换成时长更长的令牌。
- 进入维护模式。
- 使用
503
错误代码和空正文响应令牌请求。 - 退出维护。
- 将令牌生命周期缩短为正常值。
透過 Google 註冊
我們需要您的 OAuth 2.0 設定詳細資料和憑證共用憑證,才能啟用帳戶連結功能。詳情請參閱註冊。