【问题标题】:Google Smart Home Action when multiple google users uses the same account多个谷歌用户使用同一帐户时的谷歌智能家居操作
【发布时间】:2019-12-10 06:42:37
【问题描述】:

我们为我们的云解决方案实施了智能家居操作,使我们能够控制我们的恒温器。此外,实现了报告状态功能,但在下一个案例中我们遇到了麻烦:

案例:

UserA 使用 Google 帐户 userA@gmail.com 登录到 Google Home 应用程序通过我们的智能操作与帐户 进行链接过程(授权) user@ourcompany.com -> 所有设备都正确同步到他

UserB 使用 Google 帐户 anotherUserB@gmail.com 登录到 Google Home 应用程序,通过我们的 Smart Action 使用相同帐户执行链接过程(授权) UserA 做了:user@ourcompany.com -> 所有设备也是 已正确同步给他。

在我们的后端,两次被触发 SYNC 用户 user@ourcompany.com 请求,因为他们都使用同一个帐户链接。 SYNC 请求被触发后,我们开始发送 Google Report State 事件。在当前步骤,一切正常。

但是,例如,如果 UserA 取消链接他的帐户 -> Google 发送 DISCONNECT 意图,正如documentation 中所说,我们应该停止发送报告状态事件。这里有一个问题:UserB 仍然有与 user@ourcompany.com 关联的帐户,如果我们停止发送 Report State 事件,userB 将收到不正确的数据。

遇到这种情况我们该怎么办?如何正确处理?我们应该在什么时候停止发送报告状态事件?

【问题讨论】:

    标签: actions-on-google google-home google-smart-home


    【解决方案1】:

    当每个 Google 用户连接到 OurCompany 帐户时,您应该为他们分配一个唯一的访问令牌和刷新令牌。根据需要,您应该按照 OAuth 标准流程使用刷新令牌更新您的访问令牌。

    发送 DISCONNECT 意图时,您应该使用该请求的访问令牌来删除该访问令牌并刷新令牌。

    您可能会将其视为具有一系列有效刷新和访问令牌的数组。当您删除一个时,数组中可能还有第二个。一旦没有剩余令牌,您就可以停止报告状态。

    【讨论】:

    • 谢谢,我们是否可以依靠 404 错误,如果用户未链接,则应该发送此错误,或者不仅在用户帐户未链接的情况下可能会发送此错误?当前的解决方案是使用 Identity Server 进行 OAuth,因此使用您的解决方案可能有点复杂。
    • 如果您收到 404 错误,您可以合理地假设您的代理用户 ID 不再存在于 Home Graph 中
    • 404 可能意味着该设备在 Homegraph 中也不存在 - 对吗? AFAIK,您无法判断您获得的 404 是针对不存在的用户还是针对该设备的。一种解决方法(验证它是不存在的用户),可能是调用SYNC endpoint - 如果你在这里得到 404,你知道它是用户。
    • 当然,尽管您应该经常处于所有设备都在主图中同步的状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    • 1970-01-01
    • 2021-03-16
    • 2017-10-08
    • 2016-09-20
    相关资源
    最近更新 更多