Google Doc AI Java SDK欧盟区域异步处理认证失败问题排查
问题分析与解决建议
核心问题定位
你遇到的问题主要是Java SDK在对接欧盟区域Document AI时,端点配置与凭证适配不匹配导致的,具体分两种情况:
- 用默认US端点时,处理器区域(eu)与服务器部署区域(us)不匹配,直接报错;
- 切换到欧盟端点后,凭证生成的Token受众(Audience)未适配欧盟端点,导致认证失败——而Postman手动获取Token时会自动适配目标端点的受众,因此可以正常调用。
具体解决步骤
1. 确保处理器路径与区域完全匹配
异步处理请求中,处理器的完整名称必须包含欧盟区域标识,格式为:
projects/{你的项目ID}/locations/eu/processors/{你的处理器ID}
如果路径里的locations/eu写错成us或者遗漏,会直接触发区域不匹配错误。
2. 调整凭证的受众适配欧盟端点
手动指定FixedCredentialsProvider时,需要为凭证设置欧盟端点的目标受众,否则生成的Token是针对默认US端点的,欧盟服务器会判定为无效凭证。示例代码如下:
// 加载ADC文件并指定欧盟端点受众 GoogleCredentials credentials = GoogleCredentials.fromStream(new FileInputStream("你的ADC文件路径")) .createWithTargetAudience("https://eu-documentai.googleapis.com/"); // 创建适配的凭证提供者 FixedCredentialsProvider credentialsProvider = FixedCredentialsProvider.create(credentials); // 构建服务配置,同时指定欧盟端点 DocumentProcessorServiceSettings settings = DocumentProcessorServiceSettings.newBuilder() .setCredentialsProvider(credentialsProvider) .setEndpoint("eu-documentai.googleapis.com:443") .build();
如果不需要手动指定凭证文件,也可以直接让SDK自动加载ADC(推荐),SDK会根据你设置的端点自动调整Token受众,无需额外配置。
3. 升级Document AI Java SDK版本
旧版本的SDK可能对欧盟区域端点的支持不完善,存在认证逻辑的适配问题。确保使用最新稳定版的依赖(以Maven为例):
<dependency> <groupId>com.google.cloud</groupId> <artifactId>google-cloud-documentai</artifactId> <version>最新版本号</version> </dependency>
4. 检查端点拼写是否正确
确认欧盟端点是eu-documentai.googleapis.com:443,不要出现拼写错误(比如多写/少写字符),否则会直接导致连接或认证失败。
内容的提问来源于stack exchange,提问作者hareluya86
相关产品推荐
相关产品推荐

