将所有域成员插入组
Insert all domain members into Group
我目前正在编写一个插件来管理 Google 组,它使用 Admin SDK Directory API 循环遍历并检索所有组成员并进行更改等。
我发现的一个奇怪的问题是,当 'All members of the domain' 被添加到组中时,没有提供任何成员电子邮件。例如,如果我检索该组的所有成员,每个成员将以以下格式返回:
{
"kind": "admin#directory#member",
"etag": "\"ABCDEFGHIJKLMNOPQRSTUV123456789\"",
"id": "123455678910",
"email": "email@myDomain.com",
"role": "MEMBER",
"type": "USER"
},
但是,如果您 added all users within the domain to a group,当您检索此 'member' 时,它会以以下格式返回:
{
"kind": "admin#directory#member",
"etag": "\"ABCDEFGHIJKLMNOPQRSTUV123456789\"",
"id": "123455678910",
"role": "MEMBER",
"type": "CUSTOMER"
},
这对于检索很好,因为我可以通过 'type' 始终是 'Customer' 来识别它是 'All users in the domain',然后我只是给它一个任意的电子邮件地址以显示在我的界面(我使用'*@domain.com'只是因为)。
但是,当我使用 'Insert' method 更新群组成员列表时,它需要一个电子邮件地址(它指的是 'memberkey',但我知道这必须是一个电子邮件地址) .
它不会接受诸如 *@domain.com 之类的虚拟地址(它 returns 这个特定地址存在的错误,所以我猜它正在后台使用),如果我使用现有地址并尝试将 'type' 从 'User' 覆盖为 'Customer' 以尝试将现有成员转换为 'All users' 值,这不起作用(我怀疑 'type' 字段不允许 'Customer' 作为可写字段,只能作为可读字段)。
我的问题:似乎没有一种方法可以巧妙地 'Add all users in the domain' 到一个组,而无需遍历域并逐字逐句地逐一添加所有成员。这种方法是否存在,我只是错过了它?或者有没有更简洁的方法将所有成员添加到组中,而无需遍历域中的所有成员并将他们一一添加到组中?
没有 API 方法可以用于此,甚至回到配置 API 天。对于这种类型的群组,群组设置中没有任何不同,它似乎不受支持 Member Resource
。尝试将现有成员修改为 type: 'CUSTOMER'
也失败了。
但是,您可以在管理面板 UI 中设置一个群组作为您的 "All Members",然后使用该群组的地址作为代理成员。即它是传播的所有成员特征。这是一种解决方法,而不是直接的答案,但正如我在上面所说的那样,真正的答案是 "No".
我目前正在编写一个插件来管理 Google 组,它使用 Admin SDK Directory API 循环遍历并检索所有组成员并进行更改等。
我发现的一个奇怪的问题是,当 'All members of the domain' 被添加到组中时,没有提供任何成员电子邮件。例如,如果我检索该组的所有成员,每个成员将以以下格式返回:
{
"kind": "admin#directory#member",
"etag": "\"ABCDEFGHIJKLMNOPQRSTUV123456789\"",
"id": "123455678910",
"email": "email@myDomain.com",
"role": "MEMBER",
"type": "USER"
},
但是,如果您 added all users within the domain to a group,当您检索此 'member' 时,它会以以下格式返回:
{
"kind": "admin#directory#member",
"etag": "\"ABCDEFGHIJKLMNOPQRSTUV123456789\"",
"id": "123455678910",
"role": "MEMBER",
"type": "CUSTOMER"
},
这对于检索很好,因为我可以通过 'type' 始终是 'Customer' 来识别它是 'All users in the domain',然后我只是给它一个任意的电子邮件地址以显示在我的界面(我使用'*@domain.com'只是因为)。
但是,当我使用 'Insert' method 更新群组成员列表时,它需要一个电子邮件地址(它指的是 'memberkey',但我知道这必须是一个电子邮件地址) .
它不会接受诸如 *@domain.com 之类的虚拟地址(它 returns 这个特定地址存在的错误,所以我猜它正在后台使用),如果我使用现有地址并尝试将 'type' 从 'User' 覆盖为 'Customer' 以尝试将现有成员转换为 'All users' 值,这不起作用(我怀疑 'type' 字段不允许 'Customer' 作为可写字段,只能作为可读字段)。
我的问题:似乎没有一种方法可以巧妙地 'Add all users in the domain' 到一个组,而无需遍历域并逐字逐句地逐一添加所有成员。这种方法是否存在,我只是错过了它?或者有没有更简洁的方法将所有成员添加到组中,而无需遍历域中的所有成员并将他们一一添加到组中?
没有 API 方法可以用于此,甚至回到配置 API 天。对于这种类型的群组,群组设置中没有任何不同,它似乎不受支持 Member Resource
。尝试将现有成员修改为 type: 'CUSTOMER'
也失败了。
但是,您可以在管理面板 UI 中设置一个群组作为您的 "All Members",然后使用该群组的地址作为代理成员。即它是传播的所有成员特征。这是一种解决方法,而不是直接的答案,但正如我在上面所说的那样,真正的答案是 "No".