總覽

帳戶連結功能可讓 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 登入連結,並使用 授權碼流程。

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 設定詳細資料和憑證共用憑證,才能啟用帳戶連結功能。詳情請參閱註冊