簡體   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