通过 objectids 获取多个 users/groups
Getting multiple users/groups by objectids
我有一个 users/groups 的 objectid 列表,我想解析它们以显示姓名和个人资料照片。我不想对每个 objectid 发出单独的请求,而是想对它们进行批处理并在一个响应中获得所有结果。有可用的 API 吗?从我所做的搜索中,我找不到类似的东西。如果这样的 API 不存在,是否有任何提示可以提高效率?
谢谢,
波阿斯
我认为这不可能。
似乎 $filter 查询参数在对 id 进行过滤时不喜欢 "or" 表达式。
例如:https://graph.microsoft.com/beta/users/?$filter=(usageLocation eq 'US') and (city eq 'Redmond')
工作正常。
但是当 id 属性 添加到这样的表达式中时: https://graph.microsoft.com/beta/users/?$filter=(usageLocation eq 'US') and (city eq 'Redmond') or (id eq 'f19096bf-a58c-46ba-9ffd-0344f1daecf8')
然后失败 Unsupported or invalid query filter clause specified for property 'id' of resource 'User'
。
如果您能在要检索的对象之间找到一些共同点,您也许可以批量获取它们。
这是我们将很快添加的一项功能(一个名为 getById 的新操作),它允许您指定最多 1000 个对象以从 Microsoft Graph 中提取(尽管目前仅限于目录对象)。这类似于 Azure AD Graph 当前支持的功能 https://msdn.microsoft.com/en-us/library/azure/ad/graph/api/functions-and-actions#getObjectsByObjectIds。
此新操作可用时将更新此线程。
希望对您有所帮助,
也许 Dan 忘记了线程。有效的 getById 是要走的路。
以下是我如何获取用户的所有组:
var groupIds = new List<string>();
var groups = awai client.Users[userId].GetMemberGroups(false).Request().PostAsync();
groupIds.AddRange(groups);
while(groups.NextPageRequest != null)
{
groups = await groups.NextPageRequest.PostAsync();
groupIds.AddRange(groups);
}
var groupNames = new List<string>();
var groupQuery = await client.DirectoryObjects.GetByIds(groupIds,new[] { "group" }).Request().Select("DisplayName").PostAsync();
foreach (Group group in groupQuery)
{
groupNames.Add(group.DisplayName);
}
while (groupQuery.NextPageRequest != null)
{
groupQuery = await groupQuery.NextPageRequest.PostAsync();
foreach (Group group in groupQuery)
{
groupNames.Add(group.DisplayName);
}
}
我有一个 users/groups 的 objectid 列表,我想解析它们以显示姓名和个人资料照片。我不想对每个 objectid 发出单独的请求,而是想对它们进行批处理并在一个响应中获得所有结果。有可用的 API 吗?从我所做的搜索中,我找不到类似的东西。如果这样的 API 不存在,是否有任何提示可以提高效率?
谢谢, 波阿斯
我认为这不可能。
似乎 $filter 查询参数在对 id 进行过滤时不喜欢 "or" 表达式。
例如:https://graph.microsoft.com/beta/users/?$filter=(usageLocation eq 'US') and (city eq 'Redmond')
工作正常。
但是当 id 属性 添加到这样的表达式中时: https://graph.microsoft.com/beta/users/?$filter=(usageLocation eq 'US') and (city eq 'Redmond') or (id eq 'f19096bf-a58c-46ba-9ffd-0344f1daecf8')
然后失败 Unsupported or invalid query filter clause specified for property 'id' of resource 'User'
。
如果您能在要检索的对象之间找到一些共同点,您也许可以批量获取它们。
这是我们将很快添加的一项功能(一个名为 getById 的新操作),它允许您指定最多 1000 个对象以从 Microsoft Graph 中提取(尽管目前仅限于目录对象)。这类似于 Azure AD Graph 当前支持的功能 https://msdn.microsoft.com/en-us/library/azure/ad/graph/api/functions-and-actions#getObjectsByObjectIds。
此新操作可用时将更新此线程。
希望对您有所帮助,
也许 Dan 忘记了线程。有效的 getById 是要走的路。
以下是我如何获取用户的所有组:
var groupIds = new List<string>();
var groups = awai client.Users[userId].GetMemberGroups(false).Request().PostAsync();
groupIds.AddRange(groups);
while(groups.NextPageRequest != null)
{
groups = await groups.NextPageRequest.PostAsync();
groupIds.AddRange(groups);
}
var groupNames = new List<string>();
var groupQuery = await client.DirectoryObjects.GetByIds(groupIds,new[] { "group" }).Request().Select("DisplayName").PostAsync();
foreach (Group group in groupQuery)
{
groupNames.Add(group.DisplayName);
}
while (groupQuery.NextPageRequest != null)
{
groupQuery = await groupQuery.NextPageRequest.PostAsync();
foreach (Group group in groupQuery)
{
groupNames.Add(group.DisplayName);
}
}