调用Google Translate API遇403 Forbidden错误,求排查方案
Google Translate API 403 Forbidden 错误原因分析及修复
以下是导致该错误的常见原因及对应的排查/修复步骤:
1. API密钥使用方式错误
你的代码将API密钥放在了请求体的JSON中,但Google Translate API v2要求密钥必须作为URL查询参数传递,而非请求体。
修复:
修改PostAsync的请求地址,将key拼接在URL后:
var response = client.PostAsync($"language/translate/v2?key={postData.key}", content).Result;
同时从postData中移除key字段,避免冗余。
2. API密钥无效或权限不足
- 检查密钥是否在Google Cloud控制台正确生成,且未被删除或吊销。
- 确认密钥所属的Google Cloud项目已启用Cloud Translation API:登录Google Cloud控制台,进入API库,搜索并启用该API。
- 检查密钥的访问限制:如果设置了IP地址或HTTP referrer限制,确保当前运行代码的IP在允许列表内;桌面应用建议暂时关闭IP限制测试。
3. 未配置有效计费账户
Google Translate API是付费服务(含免费额度),必须为项目绑定有效的计费账户才能正常调用。即使仅使用免费额度,也需完成账单信息配置,否则会触发403禁止访问。
4. 请求参数格式问题
- 检查
PostData类的q字段序列化后的格式是否正确:确保数组被序列化为JSON数组格式(如["hi I am Tom","Hello how are you?"])。 source字段为空时API会自动检测源语言,但如果自动检测失败也可能引发问题,可尝试手动指定源语言(如source = "en")。- 确认
model字段是否允许为空:若使用基础模型可省略该字段,或指定有效值(如base)。
5. 请求方式或Content-Type不匹配
虽然Google Translate API支持JSON格式的POST请求,但部分场景下更推荐使用application/x-www-form-urlencoded格式传递参数。可尝试修改请求内容类型测试:
var formData = new Dictionary<string, string> { {"q", "hi I am Tom"}, {"q", "Hello how are you?"}, {"target", "fr"}, {"format", "text"} }; var content = new FormUrlEncodedContent(formData);
内容的提问来源于stack exchange,提问作者user1471768
相关产品推荐
相关产品推荐

