Actions on google 如何获得用户';google home的独特身份';s语音匹配配置文件?

Actions on google 如何获得用户';google home的独特身份';s语音匹配配置文件?,actions-on-google,dialogflow-es,google-home,google-assistant-sdk,Actions On Google,Dialogflow Es,Google Home,Google Assistant Sdk,我想在Google Home上开发一个应用程序(action),它将向用户返回一些机密信息。因此,我无法基于帐户链接对用户进行身份验证,因为房间里的任何人都可以使用该设备。如何从语音匹配配置文件中获取用户的唯一身份(可能是电子邮件id?帐户链接与特定用户绑定,该用户说“Ok Google”或“Hey Google”来调用您的操作。如果用户说他们使用的设备上没有注册语音(他们是“匿名”用户),那么他们无法进行帐户链接。这听起来像是你所追求的安全级别,但不清楚你为什么会有不同的想法 如果您使用的是n

我想在Google Home上开发一个应用程序(action),它将向用户返回一些机密信息。因此,我无法基于帐户链接对用户进行身份验证,因为房间里的任何人都可以使用该设备。如何从语音匹配配置文件中获取用户的唯一身份(可能是电子邮件id?

帐户链接与特定用户绑定,该用户说“Ok Google”或“Hey Google”来调用您的操作。如果用户说他们使用的设备上没有注册语音(他们是“匿名”用户),那么他们无法进行帐户链接。这听起来像是你所追求的安全级别,但不清楚你为什么会有不同的想法

如果您使用的是node.js库,则可以使用
app.getUser().userId
获取用户的唯一身份(有或没有帐户链接)。但是,如果用户“匿名”在设备上(没有进行语音注册,或者与注册的语音不匹配),则该身份将更改每个会话,因为无法确定用户是谁

您无法获取用户的电子邮件ID。(而且,即使您可以,也希望它遵循与上面处理匿名用户类似的规则。)

更新澄清“匿名”请求的含义:

当用户首次设置Google Home设备时,系统会提示他们在该设备上注册语音匹配。注册他们的语音需要他们说几次“Ok Google”和“Hey Google”,这样就可以建立语音模式。之后,此人所说的这些触发词将与他们的Google Assistant帐户关联。如果他们已将帐户链接到您的服务,他们的Google助手帐户(与他们的语音对应的调用短语)将链接到您的服务

可以允许其他用户注册设备的语音匹配。这将使他们调用短语的语音与他们的Google助手帐户相关联。如果该用户已与您的服务进行了帐户链接,则其触发调用短语的语音将与链接的帐户关联

但是,如果有人在没有为该设备设置语音匹配的情况下使用家用设备,该怎么办?调用短语仍然有效。他们仍然可以调用您的操作。但与之相关联的助理帐户是什么

由于特定的家庭设备不知道调用它并发出请求的人,因此这是一个“匿名”用户。匿名用户无法进行帐户链接,因为没有与请求关联的助理帐户。尽管提供了一个用户ID,但该ID在每次对话中都会更改,因为设备无法知道这次发出请求的匿名者与上次发出请求的匿名者是同一个人

但是,如果用户已经设置了家庭设备,但根本没有设置语音匹配,会发生什么呢?出于安全原因,系统必须假设这确实是一个共享设备,并且所有请求都必须匿名处理

附加更新

上面提到的“匿名用户ID”已被弃用,将于2019年5月删除

现在可以通过谷歌登录的账户链接获取用户的电子邮件地址,前提是他们已经将其注册为谷歌个人资料的一部分


从概念上讲,答案的其他部分可能仍然有效,尽管某些细节可能已更改。

您可以为此使用帐户链接。如果您的手机处于锁定状态,则只有在手机中注册语音的人才能使用OK google调用google助手。 如果这种类型的调用适合您,那么请继续阅读本文的其余部分。我已经发布了类似的答案

我们必须首先启用webhook,我们可以在对话框flow fulfillment docs中看到如何启用webhook 如果我们要使用GoogleAssistant,那么我们必须首先在集成中启用GoogleAssistant集成。 然后按照下面提到的步骤在google上的actions中链接帐户:-

  • 转到google云控制台->ApisandServices->凭证->OAuth 2.0客户端ID->Web客户端->注意客户端ID和客户端机密 ->下载JSON-从JSON中记下项目id、auth_uri、token_uri ->授权重定向URI->白名单我们的应用程序的URL->在此URL固定部分是,并将项目id附加到URL中 ->保存更改

  • 谷歌->账户链接设置上的操作 1.授权类型=授权代码 2.客户信息 1.填写客户端id、客户端密码、身份验证uri、令牌uri 2.输入auth uri作为和token_uri作为 3.保存并运行 4.在谷歌助手上运行时,它会显示一个错误,但不要担心 5.回到助手设置中的帐户链接部分,输入auth_uri作为 和token_uri作为 6.将示波器设置为和 我们可以走了。 7.保存更改

  • 在托管服务器日志中,我们可以看到访问令牌值,通过访问令牌,我们可以获得有关电子邮件地址的详细信息

  • 将访问令牌附加到此链接“”中,我们可以在生成的json页面中获得所需的详细信息
  • accessToken=req.get(“原始请求”).get(“数据”).get(“用户”).get(“accessToken”)

    r=requests.get(链接)
    打印(“电子邮件Id=