Microsoft Graph API에서 데이터를 가져올 수 없습니다.Microsoft Graph 401 액세스 토큰 사용 권한이 없습니다.
private String getUserNamesFromGraph() throws Exception {
String bearerToken = "Bearer "+getAccessToken();
String url = "https://graph.microsoft.com/v1.0/users";
String returnData = null;
try {
URL apiURL = new URL(url);
URLConnection con = apiURL.openConnection();
con.setRequestProperty("Authorization", bearerToken);
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
returnData = response.toString();
System.out.println(returnData);
} catch(Exception e) {
System.out.println(e);
}
return returnData;
}
private String getAccessToken() throws Exception {
String url = "https://login.microsoftonline.com/common/oauth2/v2.0/token";
URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
// header
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", "eTarget API");
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
String urlParameters = "client_id=***
APPLICATION ID FROM APPLICATION REGISTRATION PORTAL ***&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=***
APPLICATION SECRET FROM APPLICATION REGISTRATION PORTAL ***&grant_type=client_credentials";
// Send post request
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
System.out.println("\nSending 'POST' request to URL : " + url);
System.out.println("Post parameters : " + urlParameters);
System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
//print result
String returnData = response.toString();
System.out.println(returnData);
Map jsonTokenData = new Gson().fromJson(returnData, Map.class);
String accessToken = (String)jsonTokenData.get("access_token");
//System.out.println(accessToken);
return accessToken;
}
- 응용 프로그램은 registered
- 나는 성공적 그러나 대신 예상되는 데이터의 무단 401을 반환
- 방법
getUserNamesFromGraph()
액세스 토큰을 반환하는 방법getAccessToken()
을 가지고있다.
다른 변형과 종단점을 사용해 보았지만 아무런 소용이 없었습니다. 어떤 아이디어라도 감사합니다.
은 해당 '스코프'로 생성 된 액세스 토큰이므로 사용자 목록에 액세스 할 수 있습니까? 어쩌면 당신은 당신의 접근 토큰 URL (분명히 클라이언트/비밀 비트 없음)을 어떻게 만드는지를 공유 할 수 있습니다 – sfat
또한 이것을 확인하십시오 https://developer.microsoft.com/en-us/graph/docs/concepts/permissions_reference#delegated-permissions -application-permissions-and-effective-permissions – sfat
감사합니다. @sfat, 액세스 토큰을 가져 오는 방법을 추가했습니다. 권한에 대해 살펴 보겠습니다. –