Google Cloud Translation API请求缺失有效API密钥问题求助
解决Google Cloud Translation API「请求缺失有效API密钥」错误
先贴出你遇到的报错信息,方便参考排查:
E/AndroidRuntime: FATAL EXCEPTION: main Process: herrsa1.bit.translator, PID: 16598 com.google.cloud.translate.TranslateException: The request is missing a valid API key. at com.google.cloud.translate.spi.v2.HttpTranslateRpc.translate(HttpTranslateRpc.java:61) .. 18 more at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) Caused by: com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden { "code" : 403, "errors" : [{ "domain" : "global", "message" : "The request is missing a valid API key.", "reason" : "forbidden" }], "message" : "The request is missing a valid API key.", "status" : "PERMISSION_DENIED" } at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113) ... 4 more at com.google.cloud.translate.spi.v2.HttpTranslateRpc.translate(HttpTranslateRpc.java:130) ... 19 more
我之前在Android项目调用Translate API时也踩过一模一样的坑,给你几个针对性的排查和解决方向:
确认API密钥的基础配置是否正确
- 先登录Google Cloud控制台,搜索「Cloud Translation API」,确认它处于已启用状态。如果没启用,先点击启用按钮。
- 查看你的API密钥限制设置:如果是给Android应用使用,必须绑定正确的SHA-1指纹和应用包名(你的包名是
herrsa1.bit.translator,要完全匹配)。限制规则错了的话,哪怕密钥本身有效,也会返回403。 - 测试阶段可以暂时去掉密钥的所有限制,如果去掉后能正常调用,说明是限制规则配置有误,再重新调整即可。
检查代码里的密钥配置逻辑
如果你用的是API密钥认证方式,要确保客户端初始化代码正确:TranslateOptions options = TranslateOptions.newBuilder() .setApiKey("你的API密钥") .build(); Translate translate = options.getService();注意:上线时不要把密钥硬编码在代码里,可放在
gradle.properties或安全的本地配置文件中,但测试阶段可以直接写入验证有效性。如果是用服务账号密钥(JSON文件)认证:
- 确保JSON文件放在
app/src/main/assets目录下,文件名无误。 - 代码里正确加载密钥文件:
InputStream inputStream = getAssets().open("service-account-key.json"); TranslateOptions options = TranslateOptions.newBuilder() .setCredentials(ServiceAccountCredentials.fromStream(inputStream)) .build();
同时要确认该服务账号已拥有「Cloud Translation API User」的角色权限。
- 确保JSON文件放在
检查应用网络环境与权限
- 确认
AndroidManifest.xml中添加了网络权限:<uses-permission android:name="android.permission.INTERNET" /> - 如果测试环境使用了代理,可能会拦截请求导致密钥无法正确传递到Google服务器,可暂时关闭代理再测试。
- 确认
重新生成API密钥
偶尔旧密钥会因缓存或未知原因失效,直接在控制台删除旧密钥,重新生成一个新的替换到代码中测试。
如果以上方法都无效,可以去Google Cloud控制台的「API和服务」→「日志」查看具体请求日志,里面会有更详细的错误细节,帮你精准定位问题。
内容的提问来源于stack exchange,提问作者Xiao Ning Er
相关产品推荐
相关产品推荐

