簡體   English   中英

如何從Google Home的語音匹配配置文件中獲取用戶的唯一身份?

[英]How to get user's unique identity from google home's voice match profile?

我想在Google Home上開發一個應用程序(操作),它將向用戶返回一些機密信息。 因此,我無法基於帳戶鏈接對用戶進行身份驗證,因為該設備可以被會議室中的任何人使用。 如何從語音匹配配置文件中獲取用戶的唯一身份(可能是電子郵件ID)?

帳戶鏈接綁定到說“ Ok Google”或“ Hey Google”的特定用戶來調用您的操作。 如果說出該聲音的用戶在他們使用的設備上沒有注冊的語音(他們是“匿名”用戶),則他們將無法進行帳戶鏈接。 這聽起來像您要達到的安全級別,但不清楚為什么您會另外考慮。

如果您使用的是node.js庫,則可以使用app.getUser().userId獲得用戶的唯一身份(帶有或不帶有帳戶鏈接)。 但是,如果用戶“匿名”在設備上(未完成語音注冊,或者他們與注冊的語音不匹配),則此身份將更改每個會話,因為無法確定用戶是誰。

您無法獲取用戶的電子郵件ID。 (而且,即使您可以,也希望它遵循與上面處理匿名用戶類似的規則。)

更新以澄清“匿名”請求的含義:

用戶首次設置Google Home設備時,系統會提示他們在該設備上注冊語音匹配。 注冊他們的聲音要求他們說幾次“ Ok Google”和“ Hey Google”,以便建立聲音模式。 然后,此人說出的這些觸發詞將使其余的對帳單與其Google Assistant帳戶相關聯。 如果他們已經完成了帳戶鏈接到您的服務,那么他們的Google Assistant帳戶(與他們的調用短語語音匹配)便已鏈接到您的服務。

可以允許其他用戶注冊設備的語音匹配。 這樣會將他們的調用短語語音與他們的Google Assistant帳戶相關聯。 如果該用戶已經完成了與您的服務的帳戶鏈接,那么他們觸發調用短語的語音將具有與其鏈接的帳戶相關聯的內容。

但是,如果有人在沒有為該設備設置“語音匹配”的情況下使用“家”,該怎么辦? 調用短語仍然有效。 他們仍然可以調用您的操作。 但是,哪個助理帳戶與之關聯?

由於特定的家用設備不知道調用它並進行請求的人員,因此這是一個“匿名”用戶。 匿名用戶無法執行帳戶鏈接,因為沒有與該請求關聯的助手帳戶。 盡管提供了用戶ID,但該ID對於每次會話都會更改,因為設備無法知道這次發出請求的匿名人員與上次發出請求的匿名人員相同。

但是,如果用戶設置了家用設備,但根本沒有設置語音匹配,會發生什么? 出於安全原因,系統必須假定這實際上是共享設備,並且所有請求都必須匿名處理。

附加更新

上面討論的“匿名UserID”已被棄用,並將在2019年5月刪除。

現在,可以通過使用帶有Google登錄的帳戶鏈接來獲取用戶的電子郵件地址(假設他們已將其注冊為Google個人資料的一部分)。

從概念上講,盡管某些細節可能已更改,但答案的其他部分可能仍然有效。

您可以為此目的使用帳戶鏈接。 如果您的手機處於鎖定狀態,則只有語音的人會在手機中注冊,才能使用OK Google調用Google助手。 如果這種調用適合您,請繼續閱讀本文的其余部分。 我已經在這里發布了類似的答案

我們必須先啟用webhook,然后才能在對話框流實現文檔中看到如何啟用webhook。如果要使用Google Assistant,則必須首先在集成中啟用Google Assistant集成。 然后按照下面提到的有關在Google上進行帳戶關聯操作的步驟:-

  1. 轉到谷歌雲控制台-> API和服務->憑據-> OAuth 2.0客戶端ID-> Web客戶端->記下客戶端ID,從那里記下客戶端密鑰->下載JSON-從JSON記下項目ID,auth_uri,token_uri- >授權重定向URI->將我們應用的URL列入白名單->在此URL固定部分中為https://oauth-redirect.googleusercontent.com/r/,然后在URL中添加項目ID->保存更改

  2. 在Google上執行的操作->帳戶鏈接設置1.授予類型=授權代碼2.客戶端信息1.填寫客戶端ID,客戶端密鑰,auth_uri,token_uri 2.輸入https://www.googleapis.com/auth的auth uri和token_uri分別為https://www.googleapis.com/token。3 .保存並運行4.在Google助手上運行時將顯示錯誤,但請不要擔心。5.返回助手設置中的“帳戶鏈接”部分,然后輸入auth_uri作為https://accounts.google.com/o/oauth2/auth和token_uri作為https://accounts.google.com/o/oauth2/token 6.將范圍輸入為https://www.googleapis。 com / auth / userinfo.profilehttps://www.googleapis.com/auth/userinfo.email ,很高興。 7.保存更改。

  3. 在托管服務器日志中,我們可以看到訪問令牌的值,並通過訪問令牌可以獲取有關電子郵件地址的詳細信息。

  4. 將訪問令牌附加到此鏈接“ https://www.googleapis.com/oauth2/v1/userinfo?access_token= ”,我們可以在生成的json頁面中獲取所需的詳細信息。
  5. accessToken = req.get("originalRequest").get("data").get("user").get("accessToken")
    r = requests.get(link) print("Email Id= " + r.json()["email"]) print("Name= " + r.json()["name"])

暫無
暫無

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

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