FixedCredentialsProvider在调用谷歌云服务时发出未经授权的异常



我正试图通过谷歌服务帐户调用谷歌云文档AI。我有为它生成的json键,我通过FixedCredentialsProviderGoogleCredentials对象将它加载到我的应用程序中,因为对于我的用例来说,不可能通过环境变量加载它。这个方法过去是有效的,但现在它抛出了一个UNAUTHORIZED异常和一些与没有有效OAuth2令牌有关的异常。当我使用GOOGLE_APPLICATION_CREDENTIALSenv变量测试场景时,它运行良好。是否发生了不再允许使用FixedCredentials方法的更改?我还没有更新sdk,它只是自己停止了。有没有一种新的方法可以通过编程方式加载凭证JSON密钥?

最终检查了SDK源代码以找到答案。通过环境变量加载和使用GoogleCredentials之间的区别在于,在后一种情况下,它确实提供OAuth2scope,这是自上次测试以来谷歌方面对DocumentAI服务的强制要求。使用环境变量加载键来自不同的代码路径,该路径提供了一些默认作用域。当通过GoogleCredentials加载时,我们可以手动提供相同的范围,如下所示:

GoogleCredentials googleCredentials = GoogleCredentials
.fromStream(new FileInputStream(jsonKeyFile))
.createScoped(DocumentUnderstandingServiceSettings.getDefaultServiceScopes());
DocumentUnderstandingServiceClient client = DocumentUnderstandingServiceClient.create(
DocumentUnderstandingServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(googleCredentials))
.build()
);

DocumentUnderstandingServiceSettings.getDefaultServiceScopes()返回一个静态变量,该变量包含与环境变量加载方法使用的作用域相同的作用域,该方法反过来允许将DocumentAI与手动创建的GoogleCredentials一起使用。

相关内容

  • 没有找到相关文章

最新更新