TokenHelper GetAppOnlyAccessToken在新的SharePoint租约中不起作用

问题描述

我们有一个SharePoint提供程序托管的SharePoint Online加载项。它具有“仅应用程序” Web级“管理”权限。加载项使用以下方法创建SharePoint Online的客户端上下文。

方法#1:当请求直接来自带有StandardTokens的SharePoint var spContext = SharePointContextProvider.Current.GetSharePointContext(HttpContext); var spfromUrlContext = spContext.createuserClientContextForSPHost(); spfromUrlContext.ExecuteQuery();

方法#2:当存在SharePoint rootweb的URL时 字符串sp_web_url =“ https://tenancyname.sharepoint.com/sites/spdevelopment/”; var uri =新的Uri(sp_web_url); var accesstoken = TokenHelper.GetAppOnlyAccesstoken(TokenHelper.SharePointPrincipal,uri.Authority,TokenHelper.GetRealmFromTargetUrl(uri)); var spfromUrlContext = TokenHelper.GetClientContextWithAccesstoken(uri.ToString(),accesstoken.Accesstoken); spfromUrlContext.ExecuteQuery();

即使在开发人员网站上,这两种方法在我们组织租赁的SharePoint Online网站上都可以正常工作。在这里,我们使用[网站集URL] / _ layouts / 15 / AppRegNew.aspx获取SharePoint OAuth客户端ID和客户端密钥。但是,如果我们在Microsoft合作伙伴商店上发布外接程序并在ExecuteQuery()语句上引发异常,则方法2无法正常工作。使用合作伙伴存储中的客户端ID时,SharePoint提供程序托管的加载项返回401未经授权。

我们还发现方法2在新的SharePoint Online租约中不起作用。

请为方法#2建议其他方法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)