使用SPFx将用户添加/删除到私有O365组

问题描述

无法使用Group.ReadWrite.All和User.Read.All权限在SharePoint Framework(SPFx)Webpart中使用MSGraphClient将成员添加/删除 O365私有组

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

const sortedArray = [1,1,2,4,5,10,20,391,392,591]

const sortedUnique = Array.from(new Set(sortedArray))
const occurences = sortedArray.reduce((acc,el) => {
  acc.set(el,(acc.get(el) || 0) + 1)
  return acc
},new Map())

const res = sortedUnique.map((el) =>
  occurences.get(el) > 1 ? Array(occurences.get(el)).fill(el) : el
)

console.log(res)

还尝试了下面的身体

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

下面是错误文本:

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

当我使用除组所有者帐户之外的O365帐户登录时,出现此错误。当我使用“组所有者”帐户运行相同的代码时,效果很好。

以下是API管理页面和Azure AD App页面的屏幕截图

enter image description here

enter image description here

解决方法

以下是所应用的权限:

  1. Delegated permissions in Azure AD App Registration

  2. Approved Permissions in SharePoint Admin API Access

,

检查您的spfx是否已在admin-center中被授予权限。 enter image description here

,

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

O365门户中的行为相同。

当普通用户尝试将成员添加到私人组时,它将显示“ 您只能将成员添加到您有权访问的组中。”而不能添加成员。

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