如何限制哪些 Google 家庭设备可以与动作交互?

How to restrict which Google Home devices can interact with an action?

我想为 Google 家庭设备构建对话操作并控制其访问权限。只有某些设备可以调用某些操作。一旦公开部署代理,如何做到这一点?

将 Google 主页视为 Web 浏览器,将 Action 视为网页或网站。如果您想限制哪些 Web 浏览器可以访问 Internet 上的 public 站点,那么您就有点受限了。

您可以限制对某些 IP 地址的访问,这在某些情况下会起作用 - 但这意味着无法通过非静态 IP 地址进行访问,并且如果(即 - 当)一台机器获得新的静态IP地址,你有很多工作要做。同样,Google 家庭设备可以为每个唯一用户发送一个随机的 user_id 字符串,您可以使用它来限制谁可以访问。但此字符串可能会因用户重置其 Google 家用设备而发生更改,当发生这种情况时,您将不得不进行处理。

Web 上更好的解决方案是允许人们登录到您的站点。这样你可以有一个public面向的网页,但是只有有账号的人才能访问。您可以决定如何分发帐户,因此非常灵活。 Google 主页的等效项是 Account Linking,您可以在其中维护一个帐户作为您控制的 OAuth2 系统的一部分。 Google Home 将请求访问您的系统的权限,您将向 Actions 颁发 OAuth2 令牌 - 这些令牌将针对每个请求传回给您,您可以验证用户是否具有访问权限。

我强烈建议使用 Authorization Code Flow,因为这似乎是 Google 专注于提供附加功能的地方 - 例如通过 Google 主页注册您的服务。