我无法获得OAuth凭据与Office 365中的EWS一起使用。在高级别上,我正在编写SharePoint 2013应用程序,并试图访问Exchange中的用户邮箱数据。通过替换硬编码的用户名和密码的OAuth代码,我确实验证了我的EWS代码是“正确的”,并且它完美地工作。OAuth身份验证到EWS
我使用下面的代码获取令牌,但是当我尝试访问用户的收件箱时,我收到了401。为了简洁起见,我将其留下,但我在访问收件箱之前将令牌传递给新的OAuthCredentials对象。
string acsUrl = "https://accounts.accesscontrol.windows.net/";
using (WebClient exchangeTokenClient = new WebClient())
{
exchangeTokenClient.BaseAddress = acsUrl;
NameValueCollection requestParams = new NameValueCollection();
requestParams.Add("grant_type", "client_credentials");
requestParams.Add("client_id", "<clientid>@<realm>");
requestParams.Add("client_secret", "<client secret>");
requestParams.Add("resource", "00000002-0000-0ff1-ce00-000000000000/[email protected]<realm>");
exchangeTokenClient.Headers.Add("Authorization", "Bearer " + ((SharePointAcsContext)spContext).UserAccessTokenForSPAppWeb);
byte[] responseBytes = exchangeTokenClient.UploadValues("<realm>/tokens/OAuth/2", "POST", requestParams);
string response = Encoding.UTF8.GetString(responseBytes);
}
,我认为这个的越多,我就越想知道,如果我的“应用程序”需要在Exchange服务器上的权利,如果这是401的根本原因是什么。
有没有人真的这样做?我觉得应该有可能,但我似乎无法找到关于这个过程的大量文件。
感谢
乔