MS Exchange Web Service API和401未授权异常
本文关键字:授权 异常 API Exchange Web Service MS | 更新日期: 2023-09-27 18:08:49
我正在使用日历事件同步过程,但停留在一个级别,需要您的帮助,我正在使用
验证Web凭据 exchangeService。
通过使用这个我可以同步日历应用程序与我的office365帐户。但在配置其他Microsoft Exchange帐户时出现问题。
如何识别,是否使用用户名带域或用户名不带域,因为office365除了用户名带域(电子邮件地址),其中任何其他Microsoft outlook webapp不需要。
exchangeService。
通过使用这个问题是解决,数据同步与交换服务器,但问题是我们如何处理/检查是否使用用户名与域(outlook)。
使用哪个条件/逻辑来识别是office365还是其他域
使用用户的UPN将同时适用于OnPremise和Office365,所以这是使用它的最佳方法,只是使用低级用户名在Office365中不起作用https://msdn.microsoft.com/en-us/library/windows/desktop/aa380525(v=vs.85).aspx#down_level_logon_name
(不要把UPN和电子邮件地址混淆了,它们在本地通常是不同的,而在Office365中通常是相同的)
您还可以使用AutoDiscover来检测用户是否正在使用Office365(但是这仍然需要经过身份验证),例如
AutodiscoverService adAutoDiscoverService = new AutodiscoverService(ExchangeVersion.Exchange2013_SP1);
adAutoDiscoverService.Credentials = new NetworkCredential("UserName", "Password");
adAutoDiscoverService.EnableScpLookup = false;
adAutoDiscoverService.RedirectionUrlValidationCallback = adAutoDiscoCallBack;
adAutoDiscoverService.PreAuthenticate = true;
adAutoDiscoverService.TraceEnabled = true;
adAutoDiscoverService.KeepAlive = false;
GetUserSettingsResponse gsp = adAutoDiscoverService.GetUserSettings("username@domain.com", UserSettingName.UserMSOnline);
Object UserMSOnline = null;
if (gsp.Settings.TryGetValue(UserSettingName.UserMSOnline, out UserMSOnline))
{
if ((String)UserMSOnline == "True")
{
Console.WriteLine("Office365");
}
}