我从浏览器复制了以下授权代码,授权我们的应用程序使用其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
应用程序的工作没有问题,如果我们使用的是Microsoft图表REST API V1但下面的问题发生使用版本2时,它与代理权限授予我们读,写/发送这很好地工作许可登记V1的应用程序。
对于V2: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
导致该问题的代码块授权码:
@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()被称为
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 java库。
您是否注册过在V2端点上使用的新V2应用程序?据我所知,您不能在V1和V2端点上使用相同的应用程序。 –
@ShawnTabrizi我为此创建了一个新应用程序,但是您在哪里告诉您正在使用的应用程序是v2还是不是? – WowBow
您只能使用应用注册门户注册V2应用,如[此处]所述(https://docs.microsoft.com/zh-cn/azure/active-directory/develop/active-directory-v2-flows)。您将在名为“融合应用程序”的应用程序部分与属于MSA特定应用程序的“Live SDK应用程序”或属于V1应用程序的“Azure AD only应用程序”下看到它们。 –