gpt4 book ai didi

c# - 使用 SharePoint Online 和 CSOM .NET Standard 更新用户配置文件的 Azure Functions 拒绝访问

转载 作者:行者123 更新时间:2023-12-05 06:10:02 28 4
gpt4 key购买 nike

我有 Azure Function v3,我想通过使用全局管理员帐户凭据,使用 CSOM 和 .NET 标准 2.0 更新 Sharepoint 用户配置文件属性。阅读是有效的。

        var site = new Uri("https://domain-admin.sharepoint.com");
using (var authenticationManager = new AuthenticationManager())
using (var context = authenticationManager.GetContext(site, user, password))
{
var peopleManager = new PeopleManager(context);

var personProperties = peopleManager.GetPropertiesFor(accountName);
context.Load(personProperties, p => p.AccountName, p => p.UserProfileProperties);
await context.ExecuteQueryAsync();
Console.WriteLine(personProperties.UserProfileProperties["FirstName"]); //works
peopleManager.SetSingleValueProfileProperty(personProperties.AccountName, "FirstName", "CSOMvalue");
await context.ExecuteQueryAsync(); //error, access denied
}

确切的错误消息:System.Private.CoreLib:执行函数时出现异常:FunctionName。 Microsoft.SharePoint.Client.Runtime:访问被拒绝。您无权执行此操作或访问此资源。

AuthenticationManager 类取自 here 的 MS 文档我正在使用 Microsoft.SharePointOnline.CSOM v16.1.20518.12000 nuget 包。

我制作了 .NET Framework 4.7.2 Web 应用程序,它使用 SharePointOnlineCredentials 工作。但我想知道如何让它在 .NET Standard 2.0 上运行。

最佳答案

根据我过去的经验和几个小时的研究:

当您使用 Azure AD 应用程序时,您可以通读用户配置文件 - 但不能执行 CSOM 写入操作。

引用: enter image description here

虽然article表示它仅适用于使用应用程序,这种行为已在一般 Azure AD 应用程序(用户 + 应用程序)中观察到 - 因此您能够读取但不能写入的原因。

如文章中所述,您必须在 Sharepoint App only 上下文中执行读/写操作。

context = new AuthenticationManager().GetAppOnlyAuthenticatedContext(siteUrl, "[Your Client ID]", "[Your Client Secret]")

这里的 authenticationmanager 是 SharepointPNPcoreOnline 库的。

enter image description here

article细节相同。

如果您在执行相同操作时想要用户上下文(通常不需要,因为您在 UPA 执行) - 您可以相应地创建应用程序 - 但不确定 SharepointPNPCOreOnline 是否支持此操作。

关于c# - 使用 SharePoint Online 和 CSOM .NET Standard 更新用户配置文件的 Azure Functions 拒绝访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64590965/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com