授权标题,仍然获得401 Unauthorized

时间:2017-11-02 15:24:58

标签: azure-active-directory microsoft-graph

我正在尝试使用Microsoft Graph API并且整天都在401获取没有任何进展。如果您发现任何错误,请告诉我!

HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", access_token);

HttpEntity<Object> entity = new HttpEntity<>(headers);

RestTemplate restTemplate = new RestTemplate();
String response = restTemplate
    .exchange(url, HttpMethod.GET, entity, String.class)
    .getBody();
System.out.println(response);

编辑:我只想知道我发送授权的方式是否有问题。通过对Azure的不同调用正确设置access_token,并且应用程序具有调用API所需的权限。

第二次编辑:url =“https://graph.microsoft.com/v1.0/me/messages”。还测试了大量其他端点。

org.springframework.web.client.HttpClientErrorException: 401 Unauthorized

at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:63)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:700)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:653)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:613)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:531)

第三编辑: enter image description here

1 个答案:

答案 0 :(得分:0)

最好还有用于请求令牌的代码,但是根据您共享的内容 - 包括屏幕截图和您的描述 - 您要求访问列出消息 (/ me / messages)端点。

根据documentation,要访问此范围,您需要具有 Mail.Read Mail.ReadWrite 范围。您的屏幕截图显示您的应用注册信息读取所有邮箱中的日历读取所有组 应用级权限签名in and read user description as 委派权限 - 这些范围都没有定义访问用户电子邮件的权限。

因为您正在尝试使用https://graph.microsoft.com/v1.0/me/messages - 我的假设是您使用的是委派权限(应用程序不知道&#39;我是&#39;)因此,您必须添加 Mail.Read 作为委派权限,并确保在请求令牌时使用此范围。

因此,如果这没有帮助,请同时添加您用于请求令牌的代码。