Adding/Removing 一个用户使用 SPFx 加入私有 O365 组

Adding/Removing a user to private O365 group using SPFx

无法使用 SharePoint Framework(SPFx) webpart 中的 MSGraphClient 使用 add/remove O365 私有组 的 Group.ReadWrite.All 和 User.Read.All 权限的成员.

我已经从 SharePoint 管理员 API 访问页面批准了权限,以便我的“SharePoint Online 客户端可扩展性 Web 应用程序主体”获得所需的委派权限。甚至尝试使用 GroupMember.ReadWrite.All 和 Directory.ReadWrite.All 权限。

POST https://graph.microsoft.com/v1.0/groups/{groupid}/members/$ref
{
    "@odata.id": "https://graph.microsoft.com/v1.0/users/{userid}"
}

还尝试了以下 body

{
    "@odata.id": "https://graph.microsoft.com/v1.0/directoryObjects/{userid}"
}

错误文本如下:

Uncaught (in promise) Error: Error making HttpClient request in queryable [403] Forbidden ::> {
  "error": {
    "code": "Authorization_RequestDenied",
    "message": "Insufficient privileges to complete the operation.",
    "innerError": {
      "date": "2020-09-09T20:18:44",
      "request-id": "ea951e6c-ae43-4907-8c86-e6f6c8346462"
    }
  }
}

当我使用群组所有者帐户以外的 O365 帐户登录时,出现此错误。当我使用组所有者帐户 运行 相同的代码时,它工作正常。

以下是 API 管理和 Azure AD 应用程序页面的屏幕截图

以下是应用的权限:

  1. Delegated permissions in Azure AD App Registration

  2. Approved Permissions in SharePoint Admin API Access

检查您的 spfx 是否已在 admin-center 中获得权限。

这是设计使然。即使 Azure AD 应用程序具有所需的委派权限,但如果用户不是管理员或私有组的所有者,则不允许他向其中添加成员。

O365 门户中有相同的行为。

当普通用户尝试向私人群组添加成员时,会显示“ 您只能将成员添加到您有权访问的组。”并且无法添加成员。

如果您为用户分配管理员角色(用户管理员或组管理员),他可以成功添加成员。如果您将用户(没有管理员角色)添加为组的所有者,他也可以添加成员。