【问题标题】:google admin SDK for non admin-user非管理员用户的谷歌管理员 SDK
【发布时间】:2014-08-13 02:49:09
【问题描述】:
  1. 我在开发者控制台中创建了谷歌应用。
  2. 启用管理 SDK
  3. 启用 API 访问
  4. 在“管理 OAuth 客户端访问”中,我添加了“授权 API 客户端” “https://www.googleapis.com/auth/admin.directory.user”范围。

此外,我想从我的域中获取用户。

JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();

ArrayList<String> scopeList = new ArrayList<>();
scopeList.add(DirectoryScopes.ADMIN_DIRECTORY_USER_READONLY);
GoogleCredential credential = new GoogleCredential.Builder()
          .setTransport(httpTransport)
          .setJsonFactory(JSON_FACTORY)
          .setServiceAccountId("bla-bla@developer.gserviceaccount.com")
          .setServiceAccountScopes(scopeList)
          .setServiceAccountPrivateKeyFromP12File(new File("p12 file")))
          .setServiceAccountUser("superadmin@my-domain.com")
          .build();

credential.setAccessToken("access token of current google user");

Directory admin = new Directory.Builder(httpTransport, JSON_FACTORY, credential)
          .setApplicationName("Capsidea")
          .setHttpRequestInitializer(credential).build();
return admin.users().list().setDomain("my-domain.com").execute();

当我通过 superadmin@my-domain.com 通过 OAuth 登录谷歌时,一切正常。 但是当我通过 some-user-non-admin@my-domain.com 登录时出现错误: “无权访问此资源/api”

非管理员用户能否获取域中所有用户的列表? 当域更改时,鉴于有必要指定 superadmin'a ,此代码将起作用? 有什么想法吗?

【问题讨论】:

    标签: google-apps google-admin-sdk google-directory-api


    【解决方案1】:

    setServiceAccountUser 需要一个能够使用 Admin API 的用户(有一个细粒度的角色配置工具)。

    请声明您的代码需要这样的用户才能运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-16
      • 1970-01-01
      • 2013-08-01
      相关资源
      最近更新 更多