gpt4 book ai didi

java - Google服务帐户授权错误

转载 作者:行者123 更新时间:2023-12-01 17:32:42 24 4
gpt4 key购买 nike

我正在尝试通过服务帐户使用 Google API。最初,我使用带有凭据的普通项目帐户,并设法查询 API。为了使用服务帐户,我修改了代码以跳过浏览器身份验证流程并仅使用服务帐户凭据。似乎用于使用正常项目凭据的相同请求现在会给出错误,而消息中没有澄清太多内容。其过程如下:

directoryService = new GoogleService().buildDirectoryService();

Users result = directoryService.users().list()
.setCustomer("my_customer")
.setOrderBy("email")
.execute();

public Directory buildDirectoryService() throws GeneralSecurityException, IOException {
final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();

GoogleCredential credential = GoogleCredential
.fromStream(new FileInputStream("src/main/resources/newest_service_account_creds.json"))
.createScoped(SCOPES);

return new Directory.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
.setApplicationName(APPLICATION_NAME)
.setHttpRequestInitializer(credential).build();
}

不幸的是,错误消息并没有说明太多:

Exception in thread "main" com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
"code" : 400,
"errors" : [ {
"domain" : "global",
"message" : "Invalid Input",
"reason" : "invalid"
} ],
"message" : "Invalid Input"
}
at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:146)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:321)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1108)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
at GetDrivePermissions.getFiles(GetDrivePermissions.java:35)
at Main.main(Main.java:7)

我重复了该过程两次,以确保没有遗漏任何内容,包括创建新项目、启用 API、添加服务帐户、添加和启用域范围委派以及获取凭据 json 文件,还添加访问管理 UI 中的应用程序访问控制中的应用程序。但打电话

directoryService.users().list().setCustomer("my_customer").setOrderBy("email").execute();

服务仍然返回上述错误消息。

错误消息指的是“无效输入”,但该请求以前可以使用正常的应用程序凭据运行。因此,问题不在于我如何调用目录服务,而在于我的身份验证,这是工作版本和非工作版本之间的唯一区别。

由于这适用于使用项目凭据,因此我使用服务帐户的方式一定有问题,但即使重复整个过程两次也找不到错误。根据我找到的有关服务帐户的指南,这应该可行。凭证对象已创建并且看起来正确。

接下来我可以研究什么?

感谢您提前提供任何见解。

最佳答案

我将此部分改回使用应用程序自己的凭据。我有另一个使用服务帐户凭据的调用并且有效,因此这是目前的解决方法。

关于java - Google服务帐户授权错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61088561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com