我正在尝试使用 oauth 访问 EWS 托管 API(订阅推送通知),如下所示:
var authenticationTask = await authenticationContext.AcquireTokenAsync("https://outlook.office365.com", new ClientCredential(clientID, clientSecret));
string targetSmtp = "[email protected]";
ExchangeService exchangeService = new ExchangeService(ExchangeVersion.Exchange2013);
exchangeService.Url = someURL;
exchangeService.TraceEnabled = true;
exchangeService.TraceFlags = TraceFlags.All;
exchangeService.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.PrincipalName, "[email protected]");
exchangeService.HttpHeaders.Add("X-AnchorMailbox", targetSmtp);
exchangeService.Credentials = new OAuthCredentials(authenticationTask.AccessToken);
PushSubscription subscription = exchangeService.SubscribeToPushNotifications(
new[] { someFolder },
new Uri(postBackUrl),
15,
null,
EventType.NewMail,
EventType.Created,
EventType.Deleted,
EventType.Modified,
EventType.Moved,
EventType.Copied);
我能够获取我的应用程序的令牌,但在订阅用户时([电子邮件受保护])对于我收到的推送通知"The request failed. The remote server returned an error: (401) Unauthorized."
error
更新:尝试遵循此处提到的完全相同的步骤:用于交换模拟的仅限 Azure AD 应用程序的访问令牌但仍然得到401。
Ashish
对于那些遇到同样问题的人,我们需要使用证书(而不是使用客户端密钥)来获取已注册应用程序的访问令牌。有关如何操作的更多详细信息,请参阅:https://blogs.msdn.microsoft.com/exchangedev/2015/01/21/building-daemon-or-service-apps-with-office-365-mail-calendar-and-contacts-apis-oauth2-client-凭证流/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)