【发布时间】:2019-07-26 23:11:21
【问题描述】:
我正在尝试自动提供 SharePoint Online 网站集。我正在使用 SharePoint CSOM 进行操作。如果我创建 ClientContext(Microsoft.SharePoint.Client) 对象 使用 SharePointOnlineCredentials,一切都可以正常工作,例如创建子站点/列表/库、上传自定义母版页、设置 Web 属性等。(顺便说一下,我们使用的是发布站点)
ClientContext ctx = new ClientContext(contextWebUrl);
SecureString sec_pass = new SecureString();
Array.ForEach(contextPassword.ToArray(), sec_pass.AppendChar);
sec_pass.MakeReadOnly();
ctx.Credentials = new SharePointOnlineCredentials(contextUserName, sec_pass);
return ctx;
但我在生产环境中没有用户密码,因为我们必须使用 ADAL 身份验证,而且我们只有 Access Token。所以我必须使用这个令牌来创建 ClientContext 对象。喜欢;
ClientContext ctx = new ClientContext(siteUrl);
ctx.ExecutingWebRequest += delegate (object sender, WebRequestEventArgs e)
{
e.WebRequestExecutor.WebRequest.Headers.Add("Authorization", "Bearer " + siteToken.AccessToken);
if (digestValue != null)
{
e.WebRequestExecutor.WebRequest.Headers.Add("X-RequestDigest", digestValue.FormDigestValue);
e.WebRequestExecutor.WebRequest.Accept = "application/json;odata=verbose";
}
};
return ctx;
通过这种方式获取来自 SharePoint 的东西可以工作,但是如果我尝试 _set_ 一些东西,例如创建子网站或将母版页部署到 目录库 em> 我得到 401 如下。 访问被拒绝。您无权执行此操作或访问此资源
我认为这是一个更新问题,但即使我使用了 X-RequestDigest 也没有任何改变。
有些人在上传文档时遇到了同样的问题,但所有答案都是关于直接使用rest api,这不能解决我的问题。
【问题讨论】:
标签: sharepoint token adal csom unauthorized