Office 365 전자 메일을 사용하도록 응용 프로그램을 허가 한 사용자의 브라우저에서 다음 인증 코드를 복사했습니다.Office 365 v2 API 인증 코드가 잘못되었거나 잘못되었습니다.
code=OAQABAAIAAADRNYRQ3dhRSrm-4K-adpCJ3J3UJ8GyC2qJDvNhlrUAObjph6sQ3A9waeQ5Tr-DA6WzxCdFbvadCRJw2S4a_lwA7MyelZWAPQZOlaB_X_1165CbmTXJMGioU6Cr0DhVTUzIlUv_-Svjp8DBrLVCxcDp5rJMM5mDNR0iGysuDIozWnOaPqCOl35NxPzyktrYK6D1MBptmXOPbhS-stTZXbHJr9gGE3FHzMU0XANXmTm30q4SPaoWPch-S1uFFL4xwS2oUv-lELBdcfIGh5UJBSraabGihVWUnbwBhh8eURSMRwryi7kubUcq0D27S-vIVZhtKopemQ1njAcExO58S7EgAyqbIzMxvmBXBe0X1ieVrcyHYRpt4ZAq1Z4v5HLTrYhx5fGp6AkqhV09yri3bqXaZvw5R1hKuhAbRDt_isZn_L8ZEhfwnqICGUwpDU27c6Qd1txuiOVY90a4BiAUh1M1u5gjDx8nIE88R7S915w7mUjJtCzZuTKQavve8q8UOtm9udUvBOX1f-bYslpgiIRbdSYBYlP9UrbreLS1W6OFk2NX-uqp9mabyImvvj1RUm166qV6uc9hsuhzrfErDURC17JotuQBSWYauAvb38p5B-cDbsCZafpyORlbrWsYyQcdWwUPL0aOZEQXFW-v3gDw7Xri_9hvsiHrj10NTaaozqm1QpZmMf-SHJ0yF9wBWKYgAA
응용 프로그램은 우리가 마이크로 소프트 그래프 REST API를 V1을 사용하는 경우 문제없이 작동하지만 다음과 같은 문제는 버전 2를 사용하는 경우 그것은 우리가, 읽기/쓰기와 함께 잘 작동 권한을 보내기 부여하는 권한을 위임에 등록되어 발생 응용 프로그램의 V1.
V2를 들어:
@Override
public AuthenticationResult getToken(String authCode) {
ExecutorService service = Executors.newFixedThreadPool(1);
OfficeCredentials credentials = getCredentials();
try {
AuthenticationContext context = new AuthenticationContext(credentials.getAuthority(), true, service);
final Future<AuthenticationResult> resultFuture = context.acquireTokenByAuthorizationCode(
authCode, new URI(credentials.getRedirectUri()), new ClientCredential(credentials.getClientId(),
credentials.getClientSecret()), credentials.getResourceUrl(), null);
return resultFuture.get();//throws exception
} catch (URISyntaxException e) {
logger.error(e.getMessage());
} catch (MalformedURLException e) {
logger.error(e.getMessage());
} catch (Exception e) {
logger.error(e.getMessage());
}
return null;
}
이 예외가 호출 resultFuture.get()입니다 : authority =https://login.microsoftonline.com/common/oauth2/v2.0/token
및 내가 문제를 일으키는 코드 블록이
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=30..7&response_type=code&scope=mail.read&redirect_uri=https://myurl:8443/controller/saveToken
다음 URL을 사용하여 인증 코드를 가져 오지하기
java.util.concurrent.ExecutionException: com.microsoft.aad.adal4j.AuthenticationException: {"error_description":"AADSTS70000: Transmission data parser failure: Authorization Code is malformed or invalid.\r\nTrace ID: c37b4aba-c5fb-44f3-815c-dd798072095d\r\nCorrelation ID: e190ccd2-f98a-440c-8e79-69cfcead3c04\r\nTimestamp: 2017-02-06 17:53:30Z","error":"invalid_grant"}
v2로 마이그레이션하려고 할 때 내가 뭘 잘못하고 있는지 알지 못합니다. redirect_uri는 azure에 정의 된 것과 동일하며 HTTPS입니다. 이미 로컬 주소가 this에 따라 HTTPS를 수락하도록했습니다. 참고 : 나는 adal4 자바 라이브러리를 사용하고 있습니다.
V2 엔드 포인트에서 사용할 새로운 V2 애플리케이션을 등록 했습니까? 내 지식으로는 V1과 V2 엔드 포인트에서 동일한 앱을 사용할 수 없습니다. –
@ShawnTabrizi 그 목적으로 새 앱을 만들었지 만, 현재 작업하고있는 앱에 v2인지 여부를 알려주시겠습니까? – WowBow
[여기] (https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-flows)에 명시된대로 App Registration Portal을 사용하여 V2 응용 프로그램을 등록 할 수만 있습니다. MSA 특정 응용 프로그램 인 "수렴 응용 프로그램"대 "라이브 SDK 응용 프로그램"또는 V1 응용 프로그램 인 "Azure AD 전용 응용 프로그램"이라는 응용 프로그램 섹션에서 볼 수 있습니다. –