我使用Office.js
'sgetCallbackTokenAsync
加载令牌以传递给后端。
在后端,我EWS
用来检索电子邮件数据。这是我执行身份验证的方式。
ExchangeService service = new ExchangeService();
service.Url = new Uri(ewsUrl); //retrieved from getCallbackTokenAsync
service.Credentials = new OAuthCredentials(ewsToken);// retrieved from getCallbackTokenAsync
它在交换在线环境中运行良好。但是,在本地交换服务器中进行测试时,我收到了此身份验证错误:
Error Message: The remote server returned an error: (401) Unauthorized.
Stack Trace: at System.Net.HttpWebRequest.GetResponse() at Microsoft.Exchange.WebServices.Data.EwsHttpWebRequest.Microsoft.Exchange.WebServices.Data.IEwsHttpWebRequest.GetResponse() at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request)
然后我发现这个文档说 Oauth2 身份验证仅用于在线交换。我想我需要使用这个 NTLM(仅限本地 Exchange)。
EWS
我使用而不是Graph
使用它的主要原因Rest
是它更自然地支持本地服务器。那么我应该在这里更改身份验证吗?我当然不想向用户询问用户名和密码。