繁体   English   中英

EWS API,401 在 BindToItems 上未经授权

[英]EWS API, 401 Unauthorized on BindToItems

我正在为一个简单的任务而苦苦挣扎,该任务在 Exchange Online 的特定文件夹中获取新电子邮件,设置“已处理”-类别,然后存储电子邮件。

首先,我创建这样的应用程序权限:

 var app = ConfidentialClientApplicationBuilder.Create(_appConfig.ClientId).WithAuthority(AzureCloudInstance.AzurePublic, _appConfig.Tenant).WithClientSecret(_appConfig.ClientSecret).Build(); AuthenticationResult authResultresult = null; var ewsScopes = new[] {"https://outlook.office.com/.default"}; authResultresult = await app.AcquireTokenForClient(ewsScopes).ExecuteAsync();

然后我创建 Exchange-Client 并使用创建的 Oauth-Token 进行授权:

var result = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
        result.KeepAlive = false;
        result.DateTimePrecision = DateTimePrecision.Milliseconds;
        result.Url =  new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
        result.UseDefaultCredentials = false;         

        var authResultresult = await CreateAppPermissions(_appConfig);
        result.Credentials = new OAuthCredentials(authResultresult.AccessToken);            

之后,我用我的 mainSMTP 帐户模拟 SMTP-User

result.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, _appConfig.SMTPMailAccount);

之后,我使用此代码使用已知 Id 检索 Email,为其添加新类别并像这样更新项目:

   var itemsToStore = result.BindToItems(new []{newItemId}, props);
                foreach (var itemToStore in itemsToStore)
                {                   
                    itemToStore.Item.Categories.Add("Processed");
                
                    itemToStore.Item.Update(ConflictResolutionMode.AlwaysOverwrite, true); 
                } 

此代码之前已产生“访问被拒绝。 检查凭据并重试。,无法保存对要存储的项目所做的更改。” - Item.Update 异常。经过研究,我发现了这一点:

Office 365 API ErrorAccessDenied(访问被拒绝。检查凭据并重试。)

并通过删除“拥有对用户邮箱的完全访问权限” - 复选框标志来遵循建议的解决方案。

之后,当我调用 BindToItems 时,我得到了 401 未授权。 去掉复选框是不是倒退了一步?

已解决:找到 401 的解决方案:

因为我使用的是 EWS,也就是旧的 API,称为 Exchange Web 服务,所以删除该复选框是错误的。

“访问被拒绝”的原因。 检查凭据,然后重试。,无法保存对要存储的项目所做的更改。”是假冒用户无权更改其他人的电子邮件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM