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还是其他域

MS Exchange Web Service API和401未授权异常

使用用户的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");
            }
        }