Sharepoint 我该如何解决这个问题;错误403,禁止“;在通过SPFx Web部件调用Microsoft Team个人应用程序中的Microsoft Graph时?

Sharepoint 我该如何解决这个问题;错误403,禁止“;在通过SPFx Web部件调用Microsoft Team个人应用程序中的Microsoft Graph时?,sharepoint,microsoft-graph-api,microsoft-teams,spfx,Sharepoint,Microsoft Graph Api,Microsoft Teams,Spfx,我构建了一个SPFx Web部件,它通过Microsoft Graph请求SharePoint列表。它在SharePoint和Microsoft团队选项卡中都可以正常工作。然而,当我尝试在团队中作为个人应用程序运行它时,我总是得到一个错误403 作为一种调试措施,我遵循了一个关于进行简单图形调用的Microsoft教程。在SharePoint和团队中再次尝试Web部件后,我遇到了相同的问题。它既可以在SharePoint中使用,也可以作为团队选项卡使用,但不能作为团队个人应用程序使用 publi

我构建了一个SPFx Web部件,它通过Microsoft Graph请求SharePoint列表。它在SharePoint和Microsoft团队选项卡中都可以正常工作。然而,当我尝试在团队中作为个人应用程序运行它时,我总是得到一个错误403

作为一种调试措施,我遵循了一个关于进行简单图形调用的Microsoft教程。在SharePoint和团队中再次尝试Web部件后,我遇到了相同的问题。它既可以在SharePoint中使用,也可以作为团队选项卡使用,但不能作为团队个人应用程序使用

public render(): void {
this.context.msGraphClientFactory
  .getClient()
  .then((client: MSGraphClient): void => {
    // use MSGraphClient here
    // get information about the current user from the Microsoft Graph
    client
      .api('/me')
      .get((error, user: MicrosoftGraph.User, rawResponse?: any) => {
        console.log(user);

        this.domElement.innerHTML = `
          <div class=${styles.container}>
            <h2>${user.displayName}</h2>
          </div>
        `;

        if(error) {
          console.log("Error: ");
          console.log(error);
        }

    });
  });
}
public render():void{
this.context.msGraphClientFactory
.getClient()
。然后((客户端:MSGraphClient):void=>{
//在此处使用MSGraphClient
//从Microsoft Graph中获取有关当前用户的信息
客户
.api(“/me”)
.get((错误,用户:MicrosoftGraph.user,rawResponse?:any)=>{
console.log(用户);
this.doElement.innerHTML=`
${user.displayName}
`;
如果(错误){
日志(“错误:”);
console.log(错误);
}
});
});
}
作为最后一次测试,我下载了一个已经制作并运行的项目,该项目通过Microsoft Graph请求数据,它返回了相同的错误

此外,我们租户中的全局管理员将这些应用程序作为Microsoft Team个人应用程序使用没有问题。只有标准用户才会出现此问题

是否有人知道为什么此web部件不能作为个人应用程序工作,而只能在其他地方工作,以及如何解决此问题

18.11.2020:问题的快速更新:在管理员再次授予所有权限后,所有应用现在在teams web客户端中作为个人应用运行,但在桌面应用中仍然不能作为个人应用运行

public render(): void {
this.context.msGraphClientFactory
  .getClient()
  .then((client: MSGraphClient): void => {
    // use MSGraphClient here
    // get information about the current user from the Microsoft Graph
    client
      .api('/me')
      .get((error, user: MicrosoftGraph.User, rawResponse?: any) => {
        console.log(user);

        this.domElement.innerHTML = `
          <div class=${styles.container}>
            <h2>${user.displayName}</h2>
          </div>
        `;

        if(error) {
          console.log("Error: ");
          console.log(error);
        }

    });
  });
}

关于这个问题的另一个更新:我尝试在Linux中安装Teams作为测试,结果证明,所有的应用程序都作为Teams个人应用程序工作。

我认为is与“SharePoint Online Client Extensibility Web Application Principal”有关

  • 打开Azure广告并转到“应用程序注册”(左侧)

  • 您应该能够在“所有应用程序”下找到“SharePoint Online Client Extensibility Web Application Principal”

  • 打开此应用程序并转到“公开API”(左侧)

  • 添加ID为“00000003-0000-0ff1-ce00-000000000000”的客户端应用程序并选中https://microsoft.spfx3rdparty.com/user_impersonation"


  • 您是否授予该应用程序的委派权限以及该权限的管理员权限?是的,我们租户中的全局管理员为每个用户授予了这些权限。但当作为团队个人应用程序使用时,该应用程序仍然返回相同的错误。@JBLConsult您仍然面临此问题吗?如果是,请共享失败请求的requestid和时间戳以及整个错误响应。@Shiva MSFTIdentity,是的,我仍然面临这个问题。我从服务器得到的响应是:{“odata.error”:{“code”:“-2147024891,System.UnauthorizedAccessException”,“message”:{“lang”:“de”,“value”:“Zugriff verweigert.Sie haben keine Berechtigung,diesen Vorgang auszuf\u00fchren order auf diese resource zuzuzugreifen.”}请求ID为:62358e9f-c0aa-2000-8af6-6ac1e0ad3879,时间戳为:Mon,2020年11月16日13:05:47 GMT我希望这些是您需要的信息。您提供的请求ID和时间戳无效。请为失败的http调用提供一个新的requestid和时间戳。感谢您在那里的帮助。我检查了Azure广告,但不幸的是,具有此ID的客户端应用程序已经存在,并且已授予所有权限。不过,没有一款应用程序可以作为团队个人应用程序使用。有什么解决方案吗?我已经尝试了网络上建议的所有不同的选择,但我找不到任何解决方案。