使用c#和客户端对象模型(CSOM)使用外部用户连接到SharePoint Online
问题描述:
我试图使用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);
}
}
答
我试过了你的代码,它对我的租期很好。我安装了“Microsoft.SharePointOnline.CSOM”nuget软件包。也许尝试:
uninstall-package "Microsoft.SharePointOnline.CSOM"
install-package "Microsoft.SharePointOnline.CSOM"
此外,尝试在新的控制台应用程序中运行此。根据你的app.config有可能设置代理周围等
如果这并没有帮助,你也可以尝试fiddler来看电话。
编辑:也请尝试使用外部用户的电子邮件地址本身作为登录名。
+0
您是否尝试过使用外部用户?不在您的域中的用户。我也可以使用内部用户进行连接。 –
你使用代理连接到互联网吗?这也可能是其原因 – Matt
@Matt - 它可能是。有没有我确认的方法?正如我所说,我可以使用浏览器窗口进行连接。 –