You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Google翻译API Java客户端报错:请求缺少有效API密钥

解决Google Translate Java客户端报错"The request is missing a valid API key"

我碰到过好几次类似的问题,明明配置了服务账号的环境变量却还是报API Key缺失的错,给你梳理几个常见的排查方向和解决办法:

1. 先确认环境变量是否真的生效

很多时候环境变量设置后,运行程序的终端或IDE并没有重新加载配置,导致读不到文件:

  • 终端运行的话:重启终端,执行echo $GOOGLE_APPLICATION_CREDENTIALS(Linux/macOS)或者echo %GOOGLE_APPLICATION_CREDENTIALS%(Windows),检查输出的路径是否正确,且对应的JSON文件确实存在。
  • IDE中运行的话:重启IDE,或者在Run Configuration里手动添加这个环境变量(有些IDE不会自动同步系统新设置的环境变量)。

2. 检查服务账号的权限配置

就算JSON文件没问题,服务账号没有对应API的权限也会触发这个错误:

  • 登录Google Cloud控制台,进入你的项目,打开"IAM & Admin" > "IAM"页面。
  • 找到你的服务账号,点击编辑按钮,添加Cloud Translation API EditorCloud Translation API Viewer权限,保存后等几分钟让权限生效。

3. 核对代码的初始化方式

别不小心用了API Key的初始化逻辑覆盖了服务账号配置,正确的服务账号初始化应该是默认加载环境变量的:

Translate translate = TranslateOptions.getDefaultInstance().getService();

如果你的代码里写了TranslateOptions.newBuilder().setApiKey("xxx").build(),那会强制使用API Key模式,把这段代码删掉就行。

4. 验证依赖版本是否正确

旧版本的客户端库可能存在兼容性问题,确保你用的是最新稳定版。比如Maven依赖可以写:

<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-translate</artifactId>
    <version>2.32.0</version> <!-- 替换为最新稳定版 -->
</dependency>

5. 临时直接指定文件路径排查

如果前面的方法都不行,可以在代码里直接指定JSON文件路径,确认文件本身没问题:

Translate translate = TranslateOptions.newBuilder()
    .setCredentials(ServiceAccountCredentials.fromStream(new FileInputStream("/绝对路径/到/你的服务账号.json")))
    .build()
    .getService();

如果这样能正常运行,说明环境变量的加载环节出了问题,再回头排查环境变量的配置细节。

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

火山引擎 最新活动