使用OAuth2调用O365 API以使用特定客户端ID访问共享日历?

时间:2017-01-14 23:51:50

标签: java office365api office365-restapi adal4j

我使用adal4j授权clientId / secret组合来访问共享日历。

下面是我用来获取访问令牌的代码。

AuthenticationContext context = null;
AuthenticationResult result = null;
ExecutorService service = null;
try {
    service = Executors.newFixedThreadPool(1);
    context = new AuthenticationContext(m_authorityUrl, false, service);

    ClientCredential creds = new ClientCredential(m_clientId, m_clientSecret);
    Future<AuthenticationResult> future = context.acquireToken(Url, creds, null);
    result = future.get();
}

在我的情况下,我使用https://login.windows.net/common/oauth2/token作为m_authorityUrl,即客户端ID的注册应用程序的applicationId,秘密是在Azure门户中生成的秘密。

但是,当使用返回的密钥(长度为1082个字符!)时,我收到一个Http 401代码(即未授权)。我使用result.getAccessKey()函数获取密钥,然后将其添加为标题...

.addHeader("authorization", "Bearer " + m_accessKey)

这是使用访问密钥的正确方法,还是我访问错误了??

P.S。我知道密钥有问题,好像我使用Postman生成的令牌来测试呼叫。其余的代码工作得很好 - 所以oauth令牌是错误的,或者客户端没有被授权......无论如何要破译哪一个? (据我所知,该应用程序已在Azure门户中获得授权)。

0 个答案:

没有答案