已從Google開發者控制檯創建項目並創建了服務帳戶。下載了密鑰存儲區。 我需要使用谷歌管理員sdk來創建/刪除/訪問用戶。 我看到Admin SDK ON API & Auth-> API。由於範圍錯誤而無法獲得授權。訪問被拒絕,Google服務帳戶不允許請求的範圍
樣品Java代碼
public boolean makeConnectionWithGoogleAPI(){
try{
List<String> scopes = Arrays.asList("https://www.googleapis.com/auth/admin.directory.user",
"https://www.googleapis.com/auth/admin.directory.user.readonly");
HttpTransport httpTransport = new NetHttpTransport();
JacksonFactory jsonFactory = new JacksonFactory();
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(clientEmail)
.setServiceAccountUser(userId)
.setServiceAccountScopes(scopes)
.setServiceAccountPrivateKeyFromP12File(
new java.io.File(privateKeyStoreLocation))
.build();
Directory admin =
new Directory.Builder(httpTransport, jsonFactory, null)
.setHttpRequestInitializer(credential).build();
Directory.Users.List list = admin.users().list();
Users users = list.execute();
List<User> listUsers=users.getUsers();
for(User user:listUsers){
System.out.println(user.getId());
}
return true;
}catch(Exception e){
e.printStackTrace();
}
return false;
}
com.google.api.client.auth.oauth2.TokenResponseException:400錯誤的請求 { 「錯誤」: 「ACCESS_DENIED」, 「ERROR_DESCRIPTION」:「請求的範圍不允許:https://www.googleapis.com/auth/admin.directory.userhttps://www.googleapis.com/auth/admin.directory.user.readonly「 } 在com.google.api.client.auth.oauth2.TokenResponseException.from(TokenResponseException.java:105) 在com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed( TokenRequest.java:287)
是的,這是從管理控制檯 - >安全 - >高級設置 - >管理第三方客戶端OAuth添加所需的範圍。需要指定服務帳戶clientId與範圍。點擊Authroize。在代碼中使用客戶端電子郵件,並且還需要指定域Directory.Users.List list = admin.users()。list()。setDomain(clientDomain); – user3240209