Google Cloud TextToSpeech认证报错求助:凭据缺失等问题
解决Google Cloud TextToSpeech认证问题的实操方案
一、修复"Application Default Credentials are not available"错误
- 本地开发环境:
- 从GCP控制台的IAM服务账号页面,下载对应账号的JSON密钥文件
- 设置环境变量指向该文件:
- Windows终端执行:
set GOOGLE_APPLICATION_CREDENTIALS="本地密钥文件的绝对路径" - macOS/Linux终端执行:
export GOOGLE_APPLICATION_CREDENTIALS="本地密钥文件的绝对路径"
- Windows终端执行:
- 重启开发工具或终端,让环境变量生效
- Android设备(真机/模拟器):
把密钥文件放到项目的assets目录,通过代码显式加载:InputStream keyStream = getAssets().open("你的密钥文件名.json"); GoogleCredentials credentials = GoogleCredentials.fromStream(keyStream); TextToSpeechSettings settings = TextToSpeechSettings.newBuilder() .setCredentialsProvider(FixedCredentialsProvider.create(credentials)) .build(); TextToSpeechClient client = TextToSpeechClient.create(settings);
二、处理真机无法解析oauth2.googleapis.com的问题
- 确认设备网络可正常访问Google服务(避免使用屏蔽Google的网络环境)
- 检查AndroidManifest.xml中是否添加了网络权限:
<uses-permission android:name="android.permission.INTERNET" />
三、解决storage.buckets.list权限报错
- 登录GCP控制台,找到对应的服务账号
- 为该账号添加Cloud Text-to-Speech Admin角色(测试阶段用这个角色足够,生产环境可按需配置更细粒度权限)
- 移除不必要的storage相关权限(如果你的TextToSpeech场景不需要操作存储桶)
- 等待1-2分钟让权限同步,再重新运行代码
四、正确操作gcloud auth application-default login
- 执行该命令后,会自动打开浏览器,选择有权限访问目标GCP项目的Google账号完成登录
- 登录成功后,凭据会自动保存到本地默认路径,此时本地开发环境可直接使用默认凭据创建客户端
- 注意:登录的账号必须在目标GCP项目中拥有TextToSpeech的访问权限,否则仍会报错
内容的提问来源于stack exchange,提问作者Ashish Shukla
相关产品推荐
相关产品推荐

