SharePointOnlineCredentials.GetAuthenticationCookie(Uri url)返回null

时间:2019-02-05 06:35:47

标签: c# cookies sharepoint sharepoint-online csom

我已经创建了一个连接到SharePoint在线站点的C#应用​​程序。调用SharePointOnlineCredentials.GetAuthenticationCookie(siteURI)方法时,有时可以成功获取cookie,但有时返回的结果为null。为什么会这样?

        string siteUrl = "https://mySite.sharepoint.com/sites/TestSite";
        var clientContext = new ClientContext(siteUrl);
        var pswd = new SecureString();
        const string mypwd = "P@ssword";
        foreach (var c in mypwd.ToCharArray())
        {
            pswd.AppendChar(c);
        }      
        SharePointOnlineCredentials spCred = new SharePointOnlineCredentials("username", pswd);            
        clientContext.Credentials = spCred;
        var cookie = spCred.GetAuthenticationCookie(new Uri(siteUrl));
        Web web = clientContext.Web;
        clientContext.Load(web);
        clientContext.ExecuteQuery();

2 个答案:

答案 0 :(得分:0)

在我看来,您正在使用的用户无法访问该网站。可能是用户权限问题。

我已经测试过GetAuthenticationCookie方法,当用户对该网站没有访问权限时,它会返回null。

答案 1 :(得分:0)

如果用户拥有所有权限。这可能是因为不推荐使用的安全协议。尝试将安全协议指定为 TLS 1.2 版本。 您可以使用以下代码::

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 |
                                       SecurityProtocolType.Tls11 | 
                                       SecurityProtocolType.Tls | 
                                       SecurityProtocolType.Ssl3;