2017-10-10 29 views
0

我试图使用c#和客户端对象模型(CSOM)连接到SharePoint Online网站。我是外部用户,可以使用我的浏览器访问URL,但是当我以编程方式尝试时,它不会说 - 登录名或密码与Microsoft帐户系统中的名称或密码不匹配。以下是我尝试过的代码示例。我有正确的用户名/密码。任何帮助表示赞赏。使用c#和客户端对象模型(CSOM)使用外部用户连接到SharePoint Online

为了增加清晰度 - 我的外部用户看起来像myemail#EXT#@companyname.onmicrosoft.com(@ sign inmyemail被替换为下划线)。

string siteUrl = "https://companyname.sharepoint.com/sites/ERCT"; 
using (ClientContext clientContext = new ClientContext(siteUrl)) 
{ 
    var psd = "Password".ToCharArray(); 
    SecureString secureString = new SecureString(); 
    foreach (char c in psd) secureString.AppendChar(c); 
    //psd.ToList().ForEach(secureString.AppendChar); 

    clientContext.Credentials = new SharePointOnlineCredentials("[email protected]", secureString); 
    SP.List oList = clientContext.Web.Lists.GetByTitle("ListName"); 

    CamlQuery camlQuery = new CamlQuery(); 
    camlQuery.ViewXml = "<View><RowLimit>100</RowLimit></View>"; 

    ListItemCollection collListItem = oList.GetItems(camlQuery); 

    clientContext.Load(collListItem, 
    items => items.Include(
     item => item.Id, 
     item => item.DisplayName, 
     item => item.HasUniqueRoleAssignments)); 

    clientContext.ExecuteQuery(); 

    foreach (ListItem oListItem in collListItem) 
    { 
     Console.WriteLine("ID: {0} \nDisplay name: {1} \nUnique role assignments: {2}", 
     oListItem.Id, oListItem.DisplayName, oListItem.HasUniqueRoleAssignments); 
    } 
} 
+0

你使用代理连接到互联网吗?这也可能是其原因 – Matt

+0

@Matt - 它可能是。有没有我确认的方法?正如我所说,我可以使用浏览器窗口进行连接。 –

回答

0

我试过了你的代码,它对我的​​租期很好。我安装了“Microsoft.SharePointOnline.CSOM”nuget软件包。也许尝试:

uninstall-package "Microsoft.SharePointOnline.CSOM" 
install-package "Microsoft.SharePointOnline.CSOM" 

此外,尝试在新的控制台应用程序中运行此。根据你的app.config有可能设置代理周围等

如果这并没有帮助,你也可以尝试fiddler来看电话。

编辑:也请尝试使用外部用户的电子邮件地址本身作为登录名。

+0

您是否尝试过使用外部用户?不在您的域中的用户。我也可以使用内部用户进行连接。 –

相关问题