2014-06-23 138 views
0
  1. 我在開發者控制檯中創建了谷歌應用程序。
  2. 啓用管理SDK
  3. 啓用API訪問權限
  4. 在 「管理OAuth客戶端訪問」 我補充道 「授權API客戶端」 與 「https://www.googleapis.com/auth/admin.directory.user」 範圍。

此外,我想從我的域名獲得用戶。谷歌管理員非管理員用戶的SDK

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("[email protected]") 
      .setServiceAccountScopes(scopeList) 
      .setServiceAccountPrivateKeyFromP12File(new File("p12 file"))) 
      .setServiceAccountUser("[email protected]") 
      .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(); 

當我通過OAuth通過[email protected]登錄到谷歌時,它正在工作。 但是當我通過[email protected] logined我有錯誤: 「無權訪問該資源/ API」

一個非管理員用戶可以得到一個列表的域中的所有用戶? 當域更改此代碼將工作,因爲有必要指定superadmin'a? 有什麼建議嗎?

回答

0

setServiceAccountUser需要一個能夠使用Admin API的用戶(這裏有一個細粒度的角色配置工具)。

請注意,您的代碼需要這樣的用戶才能工作。