Android调用Google Cloud Speech-to-Text API认证失败求助
解决方案
1. 确认服务账号密钥文件有效性
确保下载的是服务账号JSON密钥文件:
- 进入Google Cloud控制台的服务账号页面,找到目标账号后切换到「密钥」标签
- 点击「添加密钥」→「创建新密钥」,选择「JSON」格式下载
- 检查JSON文件,确认包含
type(值为service_account)、client_email、private_key等必填字段,若缺失则重新生成
2. 修正代码中的凭证初始化逻辑
当前代码的凭证加载方式存在问题,需明确指定API权限并使用正确的Provider:
// 加载并初始化凭证 val credentialsStream = resources.openRawResource(R.raw.credentials) val credentials = GoogleCredentials.fromStream(credentialsStream) .createScoped(listOf("https://www.googleapis.com/auth/cloud-platform")) // 构建SpeechSettings并创建客户端 val speechSettings = SpeechSettings.newBuilder() .setCredentialsProvider(FixedCredentialsProvider.create(credentials)) .build() val speechClient = SpeechClient.create(speechSettings)
3. 配置服务账号权限
确保服务账号拥有Speech API的调用权限:
- 在Google Cloud控制台的IAM页面,找到对应服务账号
- 点击「编辑」,添加
Cloud Speech-to-Text Editor或Cloud Speech-to-Text Admin角色,保存后等待1-2分钟让权限生效
4. POC场景额外提醒
- 即使是POC,也不建议将密钥文件直接打包进APK,正式环境必须通过后端代理调用API
- 测试时确保设备网络能正常访问Google Cloud服务,避免因网络限制导致认证失败
内容的提问来源于stack exchange,提问作者android enthusiast
相关产品推荐
相关产品推荐

