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

C#版Google Speech-to-Text API设置欧盟区域端点报认证异常如何解决

故障根因

设置Endpoint属性本身不会导致凭证失效,也不需要把端点地址写入JSON凭证文件。
报错的核心原因是:默认从JSON文件加载的GoogleCredential生成的OAuth2访问令牌,默认绑定的受众是全局服务端点speech.googleapis.com,手动切换到欧盟区域端点eu-speech.googleapis.com时,请求携带的令牌受众和目标端点不匹配,服务端会直接判定认证无效。

正确配置方法

根据你使用的SDK版本选择对应写法即可:

通用兼容写法(适配所有1.x/2.x/3.x版本SDK)

using Google.Apis.Auth.OAuth2;
using Google.Cloud.Speech.V1;
using Grpc.Auth;

// 加载本地服务账号凭证
var baseCredential = GoogleCredential.FromFile("mycredentials.json")
    .CreateScoped(new[] { "https://www.googleapis.com/auth/cloud-platform" });

var clientBuilder = new SpeechClientBuilder
{
    Endpoint = "eu-speech.googleapis.com",
    // 显式指定信道凭证的受众匹配欧盟端点
    ChannelCredentials = baseCredential.ToChannelCredentials(
        new[] { "https://eu-speech.googleapis.com/" }
    )
};

var speechClient = clientBuilder.Build();
// 后续直接调用Recognize等接口即可正常请求欧盟区域节点

简洁写法(适配2.0及以上版本SDK)

高版本SDK内置了受众配置属性,不需要手动引用Grpc.Auth做凭证转换:

using Google.Apis.Auth.OAuth2;
using Google.Cloud.Speech.V1;

var speechClient = new SpeechClientBuilder
{
    Credential = GoogleCredential.FromFile("mycredentials.json")
        .CreateScoped("https://www.googleapis.com/auth/cloud-platform"),
    Endpoint = "eu-speech.googleapis.com",
    // 直接指定令牌受众匹配欧盟端点
    Audience = "https://eu-speech.googleapis.com/"
}.Build();
疑问明确答复
  • 如何正确配置该区域端点?
    按照上述代码示例,在设置欧盟端点地址的同时,显式指定访问令牌的受众为欧盟端点地址即可,不需要额外修改系统环境变量或全局配置。
  • 设置端点属性是否会导致凭证失效?
    不会。凭证本身始终有效,报错只是默认逻辑生成的令牌受众和自定义端点不匹配,补充受众配置后即可恢复正常。
  • 端点地址是否需要配置在json凭证文件中?
    不需要。JSON凭证文件仅存储服务账号的认证密钥信息,和服务调用的区域端点无关,手动修改凭证文件内容反而可能导致凭证格式损坏无法使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:09:46