我有一个用户/组的objectids列表,我想将它们解析为显示姓名和头像。我不想为每个objectid发出单独的请求,而是对它们进行批处理,并在一个响应中获得所有结果。有没有可用的API来解决这个问题?从我做的搜索来看,我找不到这样的东西。如果这样的API不存在,有什么技巧可以让它变得高效吗?
谢谢,波阿斯
发布于 2016-12-20 22:56:42
这是我们将很快添加的一项功能(一个名为getById的新操作),它将允许您指定最多1000个要从Microsoft Graph获取的对象(尽管目前仅限于目录对象)。这类似于Azure AD Graph https://msdn.microsoft.com/en-us/library/azure/ad/graph/api/functions-and-actions#getObjectsByObjectIds当前支持的功能。
将在此新操作可用时更新此线程。
希望这能帮上忙
发布于 2016-12-20 19:35:42
我认为这是不可能的。
在过滤id时,$filter查询参数似乎不喜欢“或”表达式。
例如: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'
失败。
如果您可以在要检索的对象之间找到一些共同点,则可以批量获取它们。
发布于 2018-06-24 01:37:03
也许丹忘了那条线。实际上,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);
}
}
https://stackoverflow.com/questions/41236017
复制相似问题