帐户链接与特定用户绑定,该用户说“Ok Google”或“Hey Google”以调用您的操作。如果用户声称在他们使用的设备上没有注册语音(他们是“匿名”用户),那么他们就无法进行帐户链接。这听起来像是您所追求的安全级别,但不清楚您为什么不这么认为。
您可以使用以下方法获取用户的唯一身份(有或没有帐户链接)app.getUser().userId
如果您使用的是node.js 库。但是,如果用户在设备上“匿名”(未进行语音注册,或者与注册的语音不匹配),则此身份将更改每个会话,因为无法确定用户是谁。
您无法获取用户的电子邮件 ID。 (而且,即使可以,人们也希望它遵循与上述处理匿名用户类似的规则。)
Update澄清“匿名”请求的含义:
当用户首次设置 Google Home 设备时,系统会提示他们在该设备上注册 Voice Match。注册他们的声音需要他们说几次“Ok Google”和“Hey Google”,以便建立语音模式。之后,此人说出的这些触发词将具有与其 Google Assistant 帐户相关联的其余声明。如果他们已完成帐户链接到您的服务,他们的 Google Assistant 帐户(与他们的调用短语的声音相匹配)将链接到您的服务。
可以允许其他用户注册设备的 Voice Match。这会将他们的调用短语语音与他们的 Google Assistant 帐户关联起来。如果该用户已与您的服务进行帐户链接,那么他们触发调用短语的语音将具有与其链接帐户关联的内容。
但是,如果有人在没有为该设备设置 Voice Match 的情况下使用 Home,该怎么办呢?调用短语仍然有效。他们仍然可以调用您的操作。但与之关联的助理帐户是什么?
由于特定的家庭设备不知道调用它并发出请求的人,因此这是一个“匿名”用户。匿名用户无法进行帐户链接,因为没有与请求关联的助理帐户。尽管提供了用户 ID,但该 ID 会针对每次对话而更改,因为设备无法知道这次发出请求的匿名者与上次发出请求的匿名者是同一个人。
但是,如果用户已设置家庭设备,但根本没有在其上设置 Voice Match,会发生什么情况?出于安全原因,系统必须假设这确实是一个共享设备,并且所有请求都必须匿名处理。
额外更新
上面提到的“匿名 UserID”已被弃用,并将于 2019 年 5 月删除。
现在可以通过使用帐户链接与 Google 登录来获取用户的电子邮件地址(假设他们已将其注册为 Google 个人资料的一部分)。
从概念上讲,尽管某些细节可能已发生变化,但答案的其他部分可能仍然有效。