繁体   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