问题描述
我具有Azure Function v3,并且我想通过使用全局管理员帐户凭据来使用CSOM和.NET Standard 2.0更新Sharepoint用户配置文件属性。阅读有效。
df2 = df[::-1]
df['days_to_err'] = df2.groupby(['id',df2['has_err'].eq(1).cumsum()]).cumcount()
id date info_a_cnt info_b_cnt has_err days_to_err
0 123 2020-01-01 123 32 0 2
1 123 2020-01-02 2 43 0 1
2 123 2020-01-03 43 4 1 0
3 123 2020-01-04 43 4 0 3
4 123 2020-01-05 43 4 0 2
5 123 2020-01-06 43 4 0 1
6 123 2020-01-07 43 4 1 0
7 123 2020-01-08 43 4 0 0
8 232 2020-01-04 56 4 0 3
9 232 2020-01-05 97 1 0 2
10 232 2020-01-06 23 74 0 1
11 232 2020-01-07 91 85 1 0
12 232 2020-01-08 91 85 0 2
13 232 2020-01-09 91 85 0 1
14 232 2020-01-10 91 85 1 0
确切错误消息: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写入操作。
尽管article说它仅适用于使用仅应用程序,但通常在Azure AD应用程序(用户+应用程序)中也观察到此行为-因此,您能够阅读但无法阅读的原因写。
如文章中所述,您将只能使用 Sharepoint App 上下文并执行读/写操作。
context = new AuthenticationManager().GetAppOnlyAuthenticatedContext(siteUrl,"[Your Client ID]","[Your Client Secret]")
这里的身份验证管理器是SharepointPNPcoreOnline库的。
此article的详细信息相同。
如果您希望在执行相同操作时希望获得用户上下文(通常不需要,因为您是在UPA上执行)-您可以相应地创建应用程序-但实际上不确定SharepointPNPCOreOnline是否支持此操作。