【发布时间】:2014-08-13 02:49:09
【问题描述】:
- 我在开发者控制台中创建了谷歌应用。
- 启用管理 SDK
- 启用 API 访问
- 在“管理 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