为什么我在尝试在 Google 目录服务中创建用户时,会看到"403 未授权访问此资源/api"错误



我已经为此苦苦挣扎了一个多星期。

我正在尝试用 Java 编写后端代码来管理我的域中的用户(创建/添加/删除(。

我一直看到以下错误:

{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Not Authorized to access this resource/api",
"reason" : "forbidden"
} ],
"message" : "Not Authorized to access this resource/api"
}

我一直在使用推荐的 Google Client API for Java。我已经完成了通常的工作:

  1. 创建的服务帐户
  2. 对具有以下作用域的服务帐户执行域范围委派 - https://www.googleapis.com/auth/admin.directory.user
  3. 在项目上启用了管理员 API
  4. 编写了下面的代码(在某处阅读 JSON 凭据文件在没有以下技巧的情况下不起作用(
GoogleCredential gcFromJson = GoogleCredential.fromStream(new FileInputStream(CREDENTIALS_FILE_PATH),httpTransport, JSON_FACTORY).createScoped(scopes);
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(gcFromJson.getTransport())
.setJsonFactory(gcFromJson.getJsonFactory())
.setServiceAccountId(gcFromJson.getServiceAccountId())
.setServiceAccountPrivateKey(gcFromJson.getServiceAccountPrivateKey())
.setServiceAccountScopes(gcFromJson.getServiceAccountScopes())
.build();
//credential.refreshToken();
Directory directory = new Directory.Builder(httpTransport, JSON_FACTORY, null)
.setApplicationName("My App Name")
.setHttpRequestInitializer(credential)
.build();
User user = new User();
// populate are the required fields only
UserName name = new UserName();
name.setFamilyName("Blogs");
name.setGivenName("Jo");
user.setName(name);
user.setPassword("password101");
user.setPrimaryEmail("jo.blogs@<my actual domain>.org");
user.setEmails("jo.blogs@<my actual domain>.org");
// requires DirectoryScopes.ADMIN_DIRECTORY_USER scope
user = directory.users().insert(user).execute();
return user

拜托,有人,任何人帮忙!

有一种建议的方法来创建一个简单的 Java 命令行应用程序,该应用程序向目录 API 发出请求。您是否遵循了所有这些步骤? Java 快速入门

最新更新