我必须从任何帐户从Exchange服务器获得联系人,所以我们使用了以下链接的代码。
但它不适用于个人帐户,而个人帐户适用于我们的组织帐户。因此,我使用了AadAuthorityAudience属性而不是TenantID,并将作用域从EWS.AccessAsUser.All更改为Other。现在身份验证已成功,但在ExchangeService中使用令牌时出现“给定令牌无效”错误。
var pcaOptions = new PublicClientApplicationOptions {
ClientId = "77xxxxxxxxxxx92324",
//TenantId = "7887xxxxxxxxxxxxx14",
RedirectUri = "https://login.live.com/oauth20_desktop.srf",
AadAuthorityAudience = AadAuthorityAudience.AzureAdAndPersonalMicrosoftAccount};
var pca = PublicClientApplicationBuilder.CreateWithApplicationOptions(pcaOptions).Build();
//var ewsScopes = new string[] { "https://outlook.office365.com/EWS.AccessAsUser.All" };
var ewsScopes = new string[] { "User.Read", "Contacts.ReadWrite.Shared" };
var authResult = await pca.AcquireTokenInteractive(ewsScopes).ExecuteAsync();
var ewsClient = new ExchangeService();
ewsClient.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
//ewsClient.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "araj@concord.net");
ewsClient.Credentials = new OAuthCredentials(authResult.AccessToken);
// Make an EWS call
var folders = ewsClient.FindFolders(WellKnownFolderName.MsgFolderRoot, new FolderView(10));
我在这里做错了什么?
1条答案
按热度按时间xdnvmnnf1#
https://outlook.office365.com/EWS.AccessAsUser.All是正确的作用域。该作用域对个人帐户无效,因为它们不受EWS支持。