如何使用从Microsoft Graph API获取的访问令牌来访问其他API

时间:2016-09-27 19:57:05

标签: azure exchangewebservices office365api microsoft-graph

我和我的团队构建了使用Microsoft Graph API从用户的Office 365环境恢复数据的Web App。该应用程序使用Azure AD为用户提供访问令牌。

我们现在正尝试使用EWS Api添加可以访问相同用户的Exchange Online信息的组件。但是,似乎尝试使用与Graph API提供的访问令牌相同的访问令牌始终返回401(未授权)响应,即使我必须在我的Azure AD应用程序上设置适当的权限。以下是我们用来尝试访问某些用户信息的代码:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013);
service.HttpHeaders.Add("Authorization", "Bearer " + accessToken);
service.PreAuthenticate = true;
service.SendClientLatencies = true;
service.EnableScpLookup = false;
service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
TasksFolder tasksfolder = TasksFolder.Bind(service, WellKnownFolderName.Tasks,
                         new PropertySet(BasePropertySet.IdOnly, FolderSchema.TotalCount));

Bind方法将始终返回401错误,提示我认为来自一个API的其他访问令牌对另一个API无效。

如果是这种情况,是否可以获得对多个API调用有效的单一访问令牌?

1 个答案:

答案 0 :(得分:0)

它应该可以正常工作,但EWS不支持受限制的权限模型,如REST,所以" EWS应用程序需要"完全访问用户的邮箱"允许。根据{{​​3}}

中的说明