You need to enable JavaScript to run this app. SmartHomeApp调用Google Home reportState接口出现UNAUTHENTICATED未授权报错
优惠活动
大模型
产品
解决方案
定价
更多

SmartHomeApp调用Google Home reportState接口出现UNAUTHENTICATED未授权报错

问题核心根源

你踩了绝大多数刚接入Google智能家居上报功能的开发者都会碰到的坑:把两套完全独立的鉴权链路当成了一套。

  • 你的服务能正常接收sync、query、execute、disconnect等各类指令回调,对应的是Google主动找你的服务发请求的鉴权逻辑:这套链路只需要在智能家居项目配置页填对回调地址、完成域名归属校验就行,整个过程你的服务不需要持有任何面向Google侧API的身份凭证。
  • 你主动调用reportState上报状态的链路,是你的服务主动找Google的Home Graph服务发请求:这套链路和上面的入站鉴权完全隔离开,根本不会自动复用你配置的回调权限,必须单独给它配置带OAuth2权限的服务账号凭证,才能通过接口的身份校验。

为什么同一个SmartHomeApp实例还是调不通

你现在手里这个能正常接收入站指令的SmartHomeApp实例,初始化的时候只传了接回调需要的参数,压根没挂载出站调用要用的服务账号凭证。SDK内部执行reportState方法时,找不到可以用来凑请求头身份信息的有效OAuth2令牌,自然会被服务端打回来,抛出你看到的UNAUTHENTICATED异常。

你贴的那串ReportStateAndNotificationRequest的序列化结果逐行核对过,格式完全合规:requestId、agentUserId、设备状态的protobuf结构体结构都没有问题,这部分业务代码根本不用改。要记住agent_user_id只是请求体里的业务标识参数,和请求头里的鉴权信息半毛钱关系都没有,就算你把这个值填得完全正确,缺了请求头里的有效令牌照样过不了校验。

具体修复方法

初始化SmartHomeApp的时候,在配置项里传入你在对应云项目创建的、已经开通Home Graph API调用权限的服务账号密钥就行:

  • SDK会自动用这套凭证完成OAuth2访问令牌的获取、过期自动刷新的全流程
  • 后续所有reportState的调用,SDK都会自动把有效令牌注入请求头,不需要你写任何额外的认证拼接逻辑
  • 配完凭证之后不需要改你现有的请求构建代码,直接重试上报就能正常通过校验

内容的提问来源于stack exchange,提问作者NateS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.03 01:36:04