簡體   English   中英

實施帳戶鏈接 - 查詢

[英]Implementing Account Linking - queries

我已經向Google Dev Advocate尋求幫助,因為我正在努力在我的Google Actions應用上實施帳戶關聯,他向我發送了一篇文檔鏈接,該文章已經閱讀並建議我也咨詢Stackoverflow。 我已經完成了第二個建議,並努力找到我的問題的確切答案,我已經在這里鏈接到doc文章,添加我的所有查詢並將其發送回Dev Advocate,希望得到更多的澄清特別是提醒一下,關於該主題的完整新手可以閱讀文檔,並且不應該給予任何理由。

這篇文章我指的是https://developers.google.com/actions/identity/account-linking

我的疑問如下:

  1. 隱式代碼流和授權代碼流之間有什么區別。 在文章“授權代碼”中選擇,為什么?
  2. 雖然我在Stackoverflow上找到了獲取客戶端ID和密碼的地方,但您認為在文章中添加鏈接不是很好嗎?
  3. 授權網址 - 這是我沒有找到明確的指南。 一些Stackoverflow票據報告可以使用2個Google OAUth URL(對於授權URL,請輸入https://accounts.google.com/o/oauth2/v2/auth。對於令牌URL,請輸入https://www.googleapis.com / oauth2 / v4 / token ),但最近谷歌政策的一項變化表明

使用OAuth實施帳戶關聯時,您必須擁有OAuth端點

所以我現在對於應該放在Aiuthorization URL和Token URL中的內容非常困惑 - 為什么不以更基本和清晰的方式記錄這些內容? 我還讀過它需要通過HTTPS提供服務,如果您正在本地和寵物項目上工作,這不是商業性的,您將無法支付HTTPS費用?

  1. 什么是無縫帳戶鏈接,為什么不解釋和記錄?

如果您的應用支持無縫帳戶關聯

  1. 我們應該在哪里列入白名單?

將以下重定向URI列入白名單: https//oauth-redirect.googleusercontent.com/r/

  1. 您的OAuth 2.0客戶端配置詳細信息是什么? 他們在哪里可以找到?

在展開的OAuth 2.0表單中,使用您的OAuth 2.0客戶端配置填寫字段。 填寫范圍時,請確保它們以空格分隔。

  1. 我沒有在Oneplus 3T Google App上看到Discovery選項卡,我還能在哪里找到它?

打開Goog​​le應用,然后轉到“發現”標簽。

  1. 這就是我被卡住的地方 - 就像Stackoverflow上的許多其他人我得到的“該帳戶尚未鏈接”錯誤。 也許解決上述問題將解決帳戶鏈接錯誤?

調用您的應用。 由於這是第一次使用您的Google帳戶調用該應用,因此助理會通知您必須關聯您的帳戶。

除了這些問題,我還有以下內容:

  1. 我想訪問用戶日歷和用戶基本信息,所以我添加了個人資料,電子郵件和https://www.googleapis.com/auth/calendar你能確認這些是正確的嗎?

謝謝,請記住文檔應該適合每個人!

文檔適用於所有開發人員。 但是,請記住,作為開發人員,某些任務可能要求學習比目前更多的知識。 來到SO是實現這一目標的方法之一,但還有許多其他途徑可以補充這一點。

然而,良好的原始文檔確實有幫助。 谷歌的文檔目前還不錯 - 它們曾經很糟糕。

更新 - 在我們開始之前,讓我回答您建議的問題,但實際上並沒有問。

為什么我需要OAuth服務器?

首先 - 你沒有。

將您的服務視為網站,將智能視為瀏覽器。 對於許多網站,他們不需要知道用戶是誰以使用該網站。 沒有用戶帳戶,網站可以做很多事情。

在某些情況下,了解訪問您網站的用戶之前訪問過您是很有用的。 通常,您將使用cookie來跟蹤這樣的用戶。

助手與此相當,雖然略有不同。 智能助理會向您發送匿名用戶ID以及每條消息。 此UserID僅適用於此用戶和您的操作 - 它不會重復用於任何其他操作或任何其他用戶。 因此,如果您跟蹤它,您將知道用戶何時返回。 像cookie一樣,用戶可以重置或清除它,但在大多數情況下,這是持久的。

但有時,您可能需要一個人登錄您網站上的帳戶。 這就是OAuth服務器要實現的目標 - 為用戶提供登錄Action的方法。 OAuth是讓人們最近登錄服務的一種非常標准的方式,盡管其目的是授權客戶代表您行事。

后者實際上是OAuth在這種情況下正在做的事情 - 您的用戶授權助理在與您的操作交談時代表用戶行事。

更新 - 現在有辦法避免在某些情況下完全設置OAuth服務器。請參閱本答復底部的更新。)

現在回到你的問題

但是......讓我們回答你的問題。

隱式代碼流和授權代碼流之間有什么區別。

這兩個術語由OAuth2標准更加謹慎地定義,但簡而言之 - 它們都讓客戶端(遠程服務器 - 在這種情況下是助手)讓用戶在您的服務器上提供某些權限。

Implicit流程更簡單,包括您需要設置的內容和兩個服務器交換的內容,但假設一旦您發出令牌,它就無限期有效。 這帶來了一個稍高的風險,有人可以獲得此令牌並使用它來模擬助理。

Auth Code流程更復雜(盡管不是很多),並以多種方式解決風險。 一種方法是某些事務是服務器到服務器完成的,而不是包括客戶端,並且這些事務包括共享密鑰。 另一種方式是,身份驗證令牌的生命周期有限,因此曝光窗口有限,但有一個刷新令牌可用於獲取新的身份驗證令牌。

在文章“授權代碼”中選擇,為什么?

最有可能的原因是它對於最低水平的額外工作更安全。 然而,它所解決的大多數安全問題在更加開放的環境中最為明顯,例如瀏覽器和移動設備 - 它們在助手方面的風險並不大。 但是,對於需要設置auth服務器的地方,使用更安全的路由在其他方面也有好處。

大多數Google API使用Auth Code流程或其變體。 (雖然大多數使用它來自客戶端 - 而不是服務器端。這是行動的帳戶鏈接所需要的。)

雖然我在Stackoverflow上找到了獲取客戶端ID和密碼的地方,但您認為在文章中添加鏈接不是很好嗎?

嗯...除了SO答案不再有效。 (並且,顯然,從來沒有打算有效。)正如您在下一個問題中提到的那樣,Google已經明確了他們的政策,要求您擁有用於操作的OAuth端點。 此外,他們還進行了技術更改,阻止您使用Google的終端。 (我已經更新了答案,這樣說。)

雖然“配置雲項目”部分是正確的,並且描述了如何設置要與Calendar API一起使用的憑據,但您無法使用Google的OAuth端點為您自己的項目執行身份驗證。

所以我現在對應該放在授權URL和令牌URL中的內容感到非常困惑 - 為什么不以更基本和清晰的方式記錄這些內容?

因為這是他們在文檔中做出不太清楚的假設的一點。 建議您在“ 步驟1.配置服務器 ”中說明您擁有OAuth服務器。 如果您已經有OAuth服務器,那么您應該知道服務器的授權和令牌URL是什么。

但是,如果不這樣做,則可以進一步說明確定 您正在創建的OAuth服務的端點的位置

我還讀過它需要通過HTTPS提供服務,如果您正在本地和寵物項目上工作,這不是商業性的,您將無法支付HTTPS費用?

是的,它必須是HTTPS。 這是OAuth的要求,也是您發送可用於執行用戶授權的令牌的良好做法。 聽起來您希望能夠向Google服務器發出API調用,如果這些令牌已經退出(或者可能用於訪問相同資源的令牌),那么您的Google帳戶可能會遭到入侵。

您可以在這里為本地或寵物項目開發提供很多選擇。 僅舉幾個:

  • 您可以使用Firebase功能。 對於“寵物”級別的項目,他們是免費的。 (如果你的行動有點受歡迎,Google智能助理會為你提供應該支付適度使用費用的積分。)

  • 您可以使用Let's Encrypt免費獲取服務器的SSL證書。

  • 由於您的服務器必須具有公共地址,因此您可以使用ngrok創建隧道,該隧道還提供您可以使用的公共HTTPS地址。 一旦您的項目退出“個人測試”階段,這可能並不好,但這是一個很好的工具。

當然還有其他方法,但這些是您可以根據需要使用的一些好工具。

什么是無縫帳戶鏈接,為什么不解釋和記錄?

它是。 除了文檔之外,他們還將其稱為“簡化身份流”。

在“ 帳戶關聯概述”頁面上,它顯示“有關詳細信息,請參閱簡化的標識流,了解如何配置OAuth服務器以支持Google智能助理上的無縫身份體驗。”

這將帶您進入一個頁面,討論此流如何構建在其他兩個身份流之上,並有一些額外的要求,但應該讓用戶的體驗更好。

但是......不要太擔心這個。 如果你只是為了好玩而這樣做,那么正常的身份流並不是那么大的負擔。 如果您正在為商業產品執行此操作 - 首先使正常流程正常工作。

我們應該在哪里列入白名單? 將以下重定向URI列入白名單: https//oauth-redirect.googleusercontent.com/r/

這是OAuth的基本概念之一 - 作為客戶端服務器與服務器之間通信的一部分,當您完成對用戶的身份驗證並獲得發布令牌的權限時,它會說重定向到特定的URL。

OAuth規范要求您將該重定向URL與已為該客戶端設置的URL進行比較。 它沒有指定你如何設置它。 所以谷歌說“當你為我們的客戶設置OAuth服務器時 - 這是我們要求你重定向到的URL。”

除了“在您的OAuth服務器中”之外,Google無法回答將此列入白名單的位置。 大多數OAuth服務器都有一種配置多個客戶端的方法,這是您為該客戶端設置的值之一。 (ClientID和ClientSecret是其他值,但Google允許您確定這些值並將其作為操作控制台中帳戶鏈接配置的一部分。這是您的下一個問題。)

您的OAuth 2.0客戶端配置詳細信息是什么? 他們在哪里可以找到?

同樣,這取決於您的 OAuth 服務器想要當他們嘗試登錄到你的服務器,以提示用戶有什么需求上。 ClientID和ClientSecret是兩個這樣的參數。 “助理”應請求訪問的OAuth范圍是其他參數。 但這取決於您 - 因為它是您嘗試訪問的服務器。

我沒有在Oneplus 3T Google App上看到Discovery選項卡,我還能在哪里找到它?

該文檔看起來不正確。 我認為應該說您應該在移動設備上打開Google Home應用。

它也可能意味着谷歌應用程序,在這種情況下,您的手機可能不支持Google智能助理作為谷歌應用程序的一部分。 如有必要,您可以單獨下載Google智能助理

但是 - 最初使用模擬器進行測試。 雖然它需要一些手動步驟,但它們易於遵循並幫助您跟蹤事物。

這就是我被卡住的地方 - 就像Stackoverflow上的許多其他人我得到的“該帳戶尚未鏈接”錯誤。 也許解決上述問題將解決帳戶鏈接錯誤?

好吧,您的帳戶尚未關聯。 {:

聽起來你還沒有為你的Action設置一個auth服務器。 在你讓auth服務器工作之前,其余部分都不會起作用。

我想訪問用戶日歷和用戶基本信息,所以我添加了個人資料,電子郵件和https://www.googleapis.com/auth/calendar你能確認這些是正確的嗎?

首先,請記住,整個過程是將用戶的智能助理帳戶與您服務上的帳戶相關聯。 您可能在其帳戶(在您的服務中)中擁有用於執行操作的信息,例如訪問Google資源或訪問您了解的有關它們的其他信息。

並非直接導致您訪問他們用於與智能助理對話的Google帳戶。

要獲得用戶在Google服務器上訪問其資源的權限,您需要讓他們授權您的服務器訪問該服務器 這是使用OAuth再次完成的,但這次你是客戶端 用戶需要轉到您的服務器,您將其重定向到Google的服務器以授權您,並且他們將被重定向回您的服務器,其中包含您需要存儲的代碼。 這一切都在智能助理及其賬戶鏈接系統之外完成。

也就是說,根據您的需要, profileemail是相當正常的請求范圍。 Calendar API文檔確認https://www.googleapis.com/auth/calendar范圍是您訪問該API所需的范圍。 (請記住,此URL不是您在瀏覽器中使用的URL,或者您要訪問任何內容的URL - 它只是唯一標識的名稱。)

更新以反映API更改。 由於此答案最初是針對性的,因此Google推出了Google Sign In for Assistant ,當您願意將操作綁定到他們在智能助理上使用的相同Google帳戶時,您可以避免設置自己的OAuth服務器。 如果用戶允許,您可以通過這種方式獲取簡單的用戶配置文件信息,然后您可以利用它來訪問其他API(再次,在用戶的許可下)。 請參閱此SO答案 ,討論如何使用它來訪問Google的其他API。

謝謝,請記住文檔應該適合每個人!

從我與谷歌的助理團隊談話,他們正在尋找使文件更容易,希望他們會采取很多您的建議對心臟。 我希望這些澄清能幫助你(以及其他遇到類似問題的人)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM