Android TV应用接入Google智能家居设备:Homegraph API权限问题咨询
选型建议与HomeGraph API权限问题解决方案
针对你的Android TV虚拟助手项目中Google智能家居设备访问的选型困惑与HomeGraph API权限问题,给出以下解决方案:
一、正确的API选型
先明确你提到的几个SDK/API的定位,帮你理清选型方向:
- Local Home SDK:用于智能设备的本地通信控制(如蓝牙、WiFi直连),不适合客户端应用获取用户设备列表的需求。
- Google Home Mobile SDK:仅针对Android手机端的Google Home应用扩展功能,不适用于Android TV平台。
- Google Home Device SDK:用于开发智能硬件设备本身,而非第三方客户端应用调用。
- Device Access API:针对需要控制特定厂商设备(如Nest系列)的场景,需获得设备厂商授权,若你的需求是获取用户所有关联的智能家居设备,并非最优选择。
- HomeGraph API:这是匹配你需求的正确选择——它提供用户已关联智能家居设备的状态、列表数据,支持与设备交互,完全适配你通过虚拟助手控制用户智能家居的场景。
二、HomeGraph权限范围报错的解决方法
你遇到的Some requested scopes cannot be shown: [https://www.googleapis.com/auth/homegraph]错误,核心原因是homegraph权限属于Google受限权限范围,无法直接在未审核的OAuth请求中使用,解决步骤如下:
完善OAuth同意屏幕配置
- 登录Google Cloud Console,进入你的项目,打开「API和服务」→「OAuth同意屏幕」。
- 选择「外部」用户类型(仅内部测试可选内部),填写完整的应用信息:包括应用名称、隐私政策链接、应用详细描述(重点说明应用需要访问HomeGraph的原因,比如“为用户提供虚拟助手控制智能家居设备的功能”)。
添加并申请权限审核
- 在OAuth同意屏幕的「权限」页面,点击「添加或删除权限」,搜索并添加
https://www.googleapis.com/auth/homegraph权限。 - 提交审核请求,等待Google团队审核通过。审核周期通常为几个工作日,需确保应用用途符合Google政策要求。
- 在OAuth同意屏幕的「权限」页面,点击「添加或删除权限」,搜索并添加
测试阶段临时方案
- 审核通过前,可在OAuth同意屏幕的「测试用户」列表中添加指定Google账号,这些测试用户可正常使用该受限权限进行开发测试,无需等待审核完成。
三、代码调整与注意事项
你的登录代码逻辑本身无问题,但需确保权限申请符合上述审核要求,调整后的代码示例如下:
fun startLogin() { val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(getString(R.string.google_web_client_id)) .requestProfile() .requestScopes( Scope("https://www.googleapis.com/auth/assistant-sdk-prototype"), Scope("https://www.googleapis.com/auth/homegraph") ) .requestEmail() .build() googleSignInClient = GoogleSignIn.getClient(this, gso) val signInIntent = googleSignInClient?.signInIntent if (signInIntent != null) { launcher.launch(signInIntent) } else { Log.e("LoginFailure", "signInIntent is null") } }
调用HomeGraph API时,需使用Google Sign-In获取的AccessToken作为请求头的Authorization: Bearer {accessToken}参数,否则会返回权限不足错误。
内容的提问来源于stack exchange,提问作者Md Ahsan Kabir
相关产品推荐
相关产品推荐

