You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 08:27:41