總覽

透過帳戶連結功能,Google 帳戶持有人就能快速、順暢又安全地連線至您的服務。您可以選擇導入 Google 帳戶連結功能,將平台中使用者資料提供給 Google 應用程式和服務。

安全的 OAuth 2.0 通訊協定可讓您將使用者的 Google 帳戶與平台上的使用者帳戶安全地連結,藉此授權 Google 應用程式和裝置存取您的服務。

使用者可以連結或取消連結帳戶,也能選擇在平台上使用 Google 帳戶連結功能建立新帳戶。

應用情境

導入 Google 帳戶連結功能的部分原因如下:

  • 與 Google 應用程式和服務共用平台上的使用者資料。

  • 使用 Google TV 播放影片和電影內容。

  • 使用 Google Home 應用程式和 Google 助理說出「Ok Google,開燈」,管理及控制已連線的 Google 智慧型住宅裝置。

  • 使用對話動作「Ok Google,用星巴克點餐」,打造使用者自訂的 Google 助理體驗和功能。

  • 只要將使用者的 Google 帳戶連結至獎勵合作夥伴帳戶,即可在 YouTube 上觀看符合資格的直播,藉此賺取獎勵。

  • 註冊時,使用 Google 帳戶設定檔的共用資料預先填入新帳戶。

支援的功能

Google 帳戶連結支援以下功能:

  • 使用 OAuth 連結隱含流程,即可輕鬆快速地分享資料。

  • 透過 OAuth 連結授權碼流程,以加強安全性。

  • 將現有使用者登入,或為您的平台註冊新的 Google 已驗證使用者,取得他們的同意並使用簡化連結安全地共用資料。

  • 利用 App Flip 減少操作阻礙。在信任的 Google 應用程式中,輕觸一下即可安全地開啟已驗證的 Android 或 iOS 應用程式,輕觸一下即可授予使用者同意及連結帳戶。

  • 定義自訂範圍並且僅分享必要資料,以加強使用者隱私,並清楚定義資料的使用方式,提升使用者的信任感。

  • 您可以透過取消連結帳戶,撤銷平台所代管資料與服務的存取權。導入選用的權杖撤銷端點可讓您與 Google 啟動的事件保持同步;跨帳戶防護 (RISC) 則可讓您在平台上發生任何取消連結事件時通知 Google。

帳戶連結流程

共有 3 個 Google 帳戶連結流程,這些流程都以 OAuth 為基礎,因此需要您管理或控制符合 OAuth 2.0 規定的授權和權杖交換端點。

在連結過程中,您會在獲得帳戶持有人同意連結帳戶和共用資料後,向 Google 核發存取權杖給個別 Google 帳戶。

OAuth 連結 (「網路 OAuth」)

這是基本 OAuth 流程,可將使用者帶往您的網站進行連結。系統會將使用者重新導向至你的網站,以便登入帳戶。使用者登入後,即表示您同意利用您的服務將個人資料提供給 Google。生效後,使用者的 Google 帳戶和您的服務就會建立連結。

OAuth 連結支援授權碼和隱式 OAuth 流程。您的服務必須為隱式流程託管符合 OAuth 2.0 規定的授權端點,且在使用授權碼流程時,必須同時公開授權和權杖交換端點。

圖 1. 透過 Web OAuth 在使用者的手機上連結帳戶

以 OAuth 為基礎的應用程式翻轉連結 (「應用程式翻轉」)

這是一種 OAuth 流程,可將使用者帶往您的應用程式進行連結。

以 OAuth 為基礎的應用程式翻轉連結會在使用者於已驗證的 Android 或 iOS 行動應用程式和 Google 平台之間移動時,引導您查看提議的資料存取變更,並授予使用者同意將平台上的帳戶與 Google 帳戶建立連結。如要啟用應用程式翻轉,您的服務必須使用授權碼流程支援 OAuth 連結OAuth 式 Google 登入連結

App Flip 同時支援 AndroidiOS

運作方式:

Google 應用程式會檢查使用者的裝置是否已安裝應用程式:

  • 如果找到該應用程式,就會「翻轉」到您的應用程式。應用程式必須徵得使用者同意,才能將帳戶連結至 Google,然後再「返回」至 Google 途徑。
  • 如果系統找不到應用程式,或是在應用程式快速連結連結過程中發生錯誤,系統會將使用者重新導向至簡化流程或網路 OAuth 流程。

圖 2:使用 App Flip 在使用者的手機上連結帳戶

OAuth 簡化連結 (「簡化」)

以 OAuth 為基礎的 Google 登入簡化連結加入了 OAuth 連結之外的 Google 登入機制,讓使用者不必離開 Google 介面,就能完成連結程序,因此能減少操作上的阻礙。以 OAuth 為基礎的簡化連結能夠結合 Google 登入與 OAuth 連結,在提供順暢的登入、建立帳戶和帳戶連結方面提供最佳使用者體驗。您的服務必須支援符合 OAuth 2.0 規定的授權和權杖交換端點。此外,您的權杖交換端點必須支援 JSON Web Token (JWT) 斷言,並實作 checkcreateget 意圖。

運作方式:

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流程,则要求用户重试链接失败。

推荐建议

有许多解决方案可以最大程度地减少维护影响。要考虑的一些选项:

  • 维护您现有的服务,并将有限数量的请求路由到您的新更新的服务。仅在确认预期功能后才能迁移所有请求。

  • 在维护期间减少令牌请求的数量:

    • 将维护周期限制为少于访问令牌生存期。

    • 临时增加访问令牌的生存期:

      1. 将令牌寿命增加到大于维护期限。
      2. 等待两次访问令牌生存期,从而使用户可以将短期令牌替换为较长令牌。
      3. 输入维护。
      4. 使用503错误代码和空主体来响应令牌请求。
      5. 退出维护。
      6. 将令牌生存期降低到正常水平。

向 Google 註冊

我們需要您設定 OAuth 2.0 設定的詳細資料並提供憑證,才能啟用帳戶連結功能。詳情請參閱「註冊」一節。