【发布时间】:2020-05-08 16:08:46
【问题描述】:
这个问题与之前在 StackOverflow 上提出的问题非常相似。但是,我得到的错误是不同的。
AadHttpClient fails when loading SP page with SPFx webpart in MSTeams Desktop Client
我还有一个 Sharepoint Online 站点,其中有一个使用 AadHttpClient 的 SPFx Web 部件。
如果我从浏览器导航到 Sharepoint 站点或打开 MS Teams Web 客户端,则此 Web 部件有效。
一瞥我的设置:
这是我面临的问题的“重现步骤”概述。
- 将 Web 部件部署到 SharePoint
- 在 SharePoint 中查看 Web 部件 - Web 部件显示并正常加载
- 在 Teams 中添加 SharePoint 选项卡并将其绑定到带有 Web 部件的页面
- 在 Teams Desktop 客户端中查看选项卡 - 数据无法加载到 Web 部件中(请参阅下文)
- 在 Teams Web 客户端中查看选项卡 - Web 部件显示并正常加载
当我调试 MS Teams 桌面客户端时,我在“网络请求”选项卡中进行了此调用:
https://{mytenant}.sharepoint.com/sites/{mysite}/_api/Microsoft.SharePoint.Internal.ClientSideComponent.Token.AcquireOBOToken?resource={GUID of my AAD app registration}&clientId={GUID of SharePoint Online Client Extensibility AAD app registration}
响应:
错误 403:
{"odata.error":{"code":"-2147024891, System.UnauthorizedAccessException","message":{"lang":"en-US","value":"访问 否认。您无权执行此操作或访问 这个资源。"}}}
一个有趣的观察是,这个 Web 请求只发生在 Microsoft Teams 桌面客户端中。
我很想知道为什么这只发生在 MS Teams 桌面客户端,而不是 MS Teams Web 客户端或 Sharepoint Online。
更新:2020 年 10 月 2 日
另一个观察结果:我们在不同的租户(个人租户而不是我们的公司租户)上尝试了相同的设置。我们注意到,当在 Azure Active Directory 上打开 MFA 时,可能会重现相同的行为。
失败的请求是:
https://{personal tenant}.sharepoint.com/sites/{site name}/_api/Microsoft.SharePoint.Internal.ClientSideComponent.Token.AcquireOBOToken?resource={GUID of the AD app registration}&clientId={GUID of the SPO Client Extensibility app registration}
但是,现在返回的错误是 500 响应:
{"odata.error":{"code":"-1, System.AggregateException","message":{"lang":"en-US","value":"一个或 出现更多错误。"}}}
在 Github 上发现了类似的问题(但出现了不同的错误):https://github.com/SharePoint/sp-dev-docs/issues/4915
【问题讨论】:
-
能否请您检查一下 this.context.pageContext.web.absoluteUrl;你得到什么网址?
-
@Trinetra-MSFT 当然可以。我检查了网络和桌面客户端。我得到的值是:
https://{TENANT}.sharepoint.com/sites/SA很高兴根据需要提供更多详细信息 -
如果你得到的 url 相同,那肯定是访问问题。您能否检查您是否具有访问共享点资源的适当权限?当 webpart 托管在 sharepoint 应用程序目录中时,可以选择与 sharepoint 应用程序目录中的团队同步。我假设你已经做到了。这也可能导致未经授权的访问。
-
@Trinetra-MSFT 是的,我可以访问 Sharepoint 资源。事实上,我自己部署了 Web 部件。但是,我在 Sharepoint 应用程序目录中看不到“同步到团队”按钮。我是否应该向租户的全局管理员询问特定权限?另外,您知道为什么 Web 部件可以在 Teams 的 Web 客户端上运行,而不是在桌面客户端上运行吗?
-
与 Teams 同步将在 sharepoint 应用目录中提供。如果不是,则可能是您创建了 SPFx webpart 项目 v1.7。仍然很少快速检查您是否在清单文件的 validDomain[] 列表中添加了共享点 URL?这是creating web part for teams tab 和creating the manifest for webpart 的链接。
标签: sharepoint azure-active-directory web-parts microsoft-teams