无法获得将 SPFX webpart 与 Azure Devops 连接的同意

Cannot get consent to connect SPFX webpart with Azure Devops

我正在尝试从 Sharepoint Web 部件连接到 Azure Devops。

我在包中添加了几个权限请求-solution.json:

"webApiPermissionRequests": [
    {
      "resource": "Windows Azure Active Directory",
      "scope": "User.Read"
    },
    {
      "resource": "Azure DevOps",
      "scope": "user_impersonation"
    },
    {
      "resource": "SharePoint Online Client Extensibility Web Application Principal",
      "scope": "user_impersonation"
    }
    ...

并使用 AAD 工厂调用 Azure DevOps api,如下所示:

this.context.aadHttpClientFactory.getClient('499b84ac-1321-427f-aa17-267ca6975798').then((client: AadHttpClient) => {      
  client.get(`https://dev.azure.com/reinder0498/_apis/projects?api-version=6.0`, AadHttpClient.configurations.v1)
  .then((response: HttpClientResponse) => {
      console.log(response);
      return response.json();
  })
  .then((projects: any): void => {
      console.log(projects);
  });
});

但随后出现此错误:“用户或管理员未同意使用 ID 为‘177c71fc-1022-4e3c-82cd-faa17d9864bf’且名为 'SharePoint Online Client Extensibility Web Application Principal' 的应用程序。发送交互式授权请求这个用户和资源。"

我查看了 Sharepoint 管理中心中待处理和已批准的请求,但看不到任何请求... 我还需要做什么才能使用 aadHttpClientFactory 连接到 Azure DevOps API?

更新

如果我在 AAD 中浏览到那个 Sharepoint Online 客户端应用程序,授予管理员同意的按钮被禁用:

注册Azure AD(Delegated Permissions)的应用程序出现错误,需要用户或管理员同意才能获得所需的权限。 您需要在 Azure 门户中为您的应用程序配置权限,或者先创建 url 并授予权限。下面是 link 如何构建 url。您只需执行一次,并可以在需要时删除权限。

授予租户范围的管理员对应用程序的同意

https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/grant-admin-consent#construct-the-url-for-granting-tenant-wide-admin-consent

此外,这里有一个 GitHub 关于您的设置的问题已提出并已解决。 SPFX USER

能够自己弄清楚。问题是您需要在您的团队环境中 运行 它才能在您的 Sharepoint 环境中创建批准请求。

我现在配置了这些权限请求:

{
   "resource": "Azure DevOps",
   "scope": "user_impersonation"
},
{
   "resource": "Windows Azure Active Directory",
   "scope": "User.Read"
}

我将我的 Web 部件上传到 Sharepoint,将其同步到 Teams,然后在 Teams 中打开它。有时我收到有关同意的错误消息,然后我看到批准请求出现在 Sharepoint 管理中。

获得批准后,我的 Web 部件成功连接到 DevOps REST API。