OAuth 與 Google 登入連結類型除了加上 Google 登入機制之外 以 OAuth 為基礎的帳戶連結。如果您在動作中使用這個連結類型, 這個流程是從 Google 登入開始,可讓您檢查使用者的 Google 設定檔資訊存在於您的系統中。如果沒有,為標準 OAuth 流程 。結合這兩種連結類型,讓使用者能夠 要求他們在動作中使用 Google 或非 Google 帳戶。如果 也可以透過自己的 Google 個人資料建立新帳戶 可能不準確或不適當
我們建議使用 OAuth 和 Google 登入的帳戶連結解決方案 (如有) 下列規則:
- 您的動作橫跨多個平台 (例如, 動作適用於 Android 應用程式)。
- 您已經有驗證系統,且想允許使用者 連結自己的身分與非 Google 帳戶。舉例來說 例如您推出的會員方案,希望確保使用者不會失去 現有帳戶累積的積分。
如要驗證 OAuth 和 Google 登入是否是適合您的解決方案,請參閱 選擇帳戶連結類型頁面。
重要詞彙
請先熟悉 OAuth 和 Google 登入的運作方式,再開始閱讀。 包含下列字詞:
- Google ID 權杖:經簽署的使用者身分宣告,當中包含 使用者的基本 Google 個人資料資訊 (包括姓名、電子郵件地址和 個人資料相片) 即可。Google ID 權杖 JSON Web Token (JWT)。以下是已解碼的權杖範例:
{
"sub": 1234567890, // The unique ID of the user's Google Account
"iss": "https://accounts.google.com", // The token's issuer
"aud": "123-abc.apps.googleusercontent.com", // Client ID assigned to your Actions project
"iat": 233366400, // Unix timestamp of the token's creation time
"exp": 233370000, // Unix timestamp of the token's expiration time
"name": "Jan Jansen",
"given_name": "Jan",
"family_name": "Jansen",
"email": "jan@gmail.com", // If present, the user's email address
"locale": "en_US"
}
- 帳戶登入協助程式意圖:您所呼叫的輔助意圖
Google 助理提供的帳戶連結流程若需更多資訊,請參閲
登入帳戶。
- 內容字串:您加進帳戶的自訂字串 登入輔助意圖,向使用者說明您想連結的原因 他們的帳戶。
- 授權碼流程:可透過 使用 OAuth 2.0 流程執行。
OAuth + Google 登入。此流程需要兩個端點:
- 授權端點:顯示登入 UI 的端點 吸引尚未登入的使用者記錄同意以下事項: 以短期授權碼形式要求存取權。
- 權杖交換端點:這個端點負責兩種類型
廣告交易平台:
- 交換長期更新權杖的授權碼 和短期存取權杖這種交換機制是 完成帳戶連結流程
- 交換可長期存取的長期更新權杖 產生下一個符記當 Google 需要新的存取權杖時,就會發生這個交換作業 因為通知已過期
- 隱式程式碼流程:可透過 使用 OAuth 2.0 流程執行。 OAuth + Google 登入。這個流程只需要授權端點。 在這個流程中,Google 會在使用者的 。如果登入成功,系統就會將長期存取權杖傳回給 Google。這個存取權杖現已包含在每個透過 用 Google 助理搭配你的動作。
- 存取權杖:這種權杖可用來授權服務存取 使用者資料。存取權杖與每位使用者相關聯。
- 更新權杖:一旦發生新存取權杖,便會用來交換新存取權杖的權杖 短期存取權杖已過期。
必要條件
如要使用 OAuth 和 Google 登入連結類型,您需要下列項目:
- OAuth 2 伺服器
權杖交換端點
您必須擴充權杖交換端點,才能新增 Google 的 自動連結及從 ID 權杖建立帳戶的通訊協定 (也就是將
intent=get
和intent=create
參數加入至 這個端點)。
運作方式
本節說明 OAuth 和 Google 登入的一般流程。 下一節「OAuth 和 GSI 流程」會說明 A) 決定啟用或停用各種流程 透過語音建立帳戶,以及 b) 使用隱含或 授權碼流程
基本流程如下:
- 您的動作要求使用者同意存取其 Google 個人資料。
- 使用者提供同意聲明後,您的動作會收到 Google ID 權杖。 包含使用者的 Google 個人資料資訊。
- 您必須驗證權杖並解碼,才能讀取設定檔內容。
- 你的動作會使用這個權杖檢查使用者的 Google 個人資料
才是有效的資訊
- 如果有,表示使用者已使用 Google 帳戶,Google 助理會將使用者身分與其識別資訊連結 Google 帳戶。使用者可以繼續與 已連結 Google 助理。
- 如果沒有,請參閱步驟 5。
- 使用者可以選擇 a) 使用 Google 個人資料建立新帳戶 資訊或 b) 使用其他帳戶登入系統。 系統會根據你啟用還是 停用透過語音建立帳戶的功能。如果使用者選擇登入 系統登入不同帳戶,將啟動標準 OAuth 流程。
- 使用者建立新帳戶或透過其他供應商登入後, 您的服務會將存取權杖傳回 Google。(如果您使用的是 授權碼流程,您的服務也會傳回更新權杖)。
- 使用者現在可以繼續和 Google 助理對話,包括 帳戶。
OAuth 和 GSI 流程
本節將說明 OAuth 和 GSI 可能發生的各種流程。 下圖呈現使用授權碼流程的各個流程 而非「隱含」程式碼流程,並且假設您使用 Dialogflow 為您的動作提供自然語言理解解決方案
每個流程都會在使用者叫用動作後包含以下常見步驟:
在上述流程中,您可以使用actions.intent.SIGN_IN
您自訂的內容字串這項意圖會要求使用者授予權限
自己的 Google 個人資料。使用者同意後,Google 助理會
包含 user@gmail.com
設定檔資訊的要求。
此時間點之後的流程會因您是否設定帳戶而異 以及使用者資訊是否已存在 有些人會將 Cloud Storage 視為檔案系統 但實際上不是以下各節將逐一說明這些流程。
啟用語音帳戶的流程
本節將詳細說明啟用 Google Ads 政策後可能發生的帳戶連結流程 透過語音建立帳戶
流程 1:使用者資訊存在於系統中
在這個情況下,user@gmail.com
代表的使用者就存在於您的後端。
,因此權杖交換端點會針對使用者傳回權杖。使用者的
動作中的身分現已連結至對方的 Google 帳戶。使用者的
原始要求 (「Order my general」) 符合自訂意圖 order_drink.
接著,Webhook 會處理相符意圖的執行要求,並查詢
「user@gmail.com
」一般訂單使用者可以繼續
和「Google 助理」對話
流程 2:使用者資訊不存在,且使用者建立帳戶
因為您允許透過語音建立帳戶,user@gmail.com
並未
你的後端存在,Google 助理會詢問使用者是否要這麼做
下列任一項:
a) 使用對方的 Google 個人資料建立新帳戶。 模型是透過語音來完成
b) 使用其他帳戶登入系統
在這種情況下,使用者選擇透過語音建立新帳戶。Google 通話 服務的權杖交換端點,並要求建立帳戶。 這項要求含有 Google ID 權杖,其中包含所需的元件 建立新的帳戶。接著您可以使用這個權杖中的資訊 (使用者名稱和電子郵件地址) 為使用者建立帳戶。
帳戶建立後,您的服務會傳回存取權杖並重新整理
做為新建帳戶的權杖使用者在動作中的身分現已生效
與 Google 帳戶連結。使用者的原始要求 (「照常訂購」)
符合自訂意圖 order_drink.
接著 Webhook 會處理
對相符意圖的執行要求,並向資料庫查詢
user@gmail.com
的一般訂單,因為使用者是新使用者,所以尚不存在。
然後透過該動作詢問使用者想點什麼。
流程 3:使用者資訊不存在,且使用者以不同的帳戶登入
您透過語音啟用帳戶建立功能,因此 Google 助理會詢問使用者 他們想要執行下列其中一項操作:
a) 使用對方的 Google 個人資料建立新帳戶。 模型是透過語音來完成
b) 使用其他帳戶登入系統
此時,使用者選擇用其他帳戶登入 啟動標準 OAuth 流程如果是在語音裝置上啟動流程 Google 會將執行作業轉移到手機中。Google,然後開啟 使用者瀏覽器中的授權端點,以及 使用者可以選擇是否登入) 未使用 Google 登入的現有帳戶;或是 b) 建立新帳戶 使用不同的供應商如要進一步瞭解 OAuth 流程,請參閱 OAuth 概念指南。
驗證使用者的憑證後,您的服務會傳回存取權杖
並向 Google 發出更新權杖已在動作中連結使用者身分
已新增至非 Google 帳戶使用者的原始要求 (「正常訂購」) 與
自訂意圖 order_drink.
接著您的 Webhook 會處理
相符的意圖,並向資料庫查詢 user@gmail.com
的一般順序
因為使用者是新使用者,所以目前並不存在您的動作隨後可以詢問
使用者想訂購的商品,或請他們設定平常的訂單。
已停用建立語音帳戶的流程
本節將詳細說明停用後可能發生的帳戶連結流程 透過語音建立帳戶
流程 4:使用者資訊不存在
您並未透過語音建立帳戶,而且該使用者不在您的 後端,因此標準 OAuth 流程就會開始。Google 助理會開啟您的 使用者瀏覽器中的授權端點 (如果流程是透過語音啟動 Google 會將執行作業傳輸至有螢幕的裝置)。使用者可以 選擇其中一個) 登入其他供應商 (如果對方已註冊 使用您的服務,或是 b) 建立新帳戶,並 選擇的服務供應商如要進一步瞭解 OAuth 流程,請參閱 OAuth 概念指南。
驗證使用者的憑證後,您的服務會傳回存取權杖
並向 Google 發出更新權杖已在動作中連結使用者身分
已新增至非 Google 帳戶使用者的原始要求 (「正常訂購」) 與
自訂意圖 order_drink.
接著您的 Webhook 會處理
相符的意圖,並向資料庫查詢 user@gmail.com
的一般順序
因為使用者是新使用者,所以目前並不存在您的動作隨後可以詢問
設定自己常用的訂單。