Google Assistant自定义应用账户链接报错:ServiceId未配置
嘿,我之前也踩过这个坑,这个错误基本都是手机端配置和测试环境的配置不匹配,或者Service ID的关联环节出了问题。下面是几个你可以一步步排查的方向:
检查Actions Console中的Service ID配置
打开你的Actions Console项目,进入账户链接设置页面,确认填写的Service ID是否和项目设置里的Service ID完全一致。这个ID可以在项目的设置 -> 常规页面找到,注意它是大小写敏感的,别写错字符或者多打空格。验证OAuth客户端的重定向URI
Google Assistant的账户链接重定向URI格式是固定的:https://oauth-redirect.googleusercontent.com/r/<PROJECT_ID>_<SERVICE_ID>。你需要确保这个URI已经准确添加到你的OAuth服务器的客户端允许列表里,并且其中的SERVICE_ID和Actions Console里的完全匹配。如果这里写错了,Google会直接终止流程,根本不会发起请求到你的服务器。确认测试版本的配置同步
测试环境(比如模拟器)可能用的是本地缓存的配置,但手机端的测试需要你在Actions Console的测试标签下,确保账户链接的配置已经部署到测试版本。另外,手机端登录的Google账号必须是你添加到测试用户列表里的账号,否则会触发生产环境的配置检查,而你的配置可能还没部署到生产。排查Service ID的关联关系
有时候会出现Cloud项目和Actions项目的Service ID不匹配的情况。你可以登录Google Cloud Console,找到对应的项目,进入APIs & Services -> Credentials,查看你的OAuth客户端ID是否和Actions项目的Service ID关联正确。如果是手动创建的OAuth客户端,可能需要重新关联到Actions项目。检查OAuth服务器的网络可达性
虽然你说Google没发起请求,但还是要确认你的OAuth服务器是否能被公网正常访问,有没有防火墙、安全组或者CDN拦截了Google的请求。另外,你的SSL证书必须是受信任的权威机构颁发的,自签名证书在手机端的真实环境里会被直接拒绝,导致流程中断。
如果这些步骤都排查完还是有问题,可以尝试在Actions Console里重新保存账户链接配置,等待几分钟让配置同步,再用手机测试一次。
内容的提问来源于stack exchange,提问作者T. Heid

