Мы можем определить, является ли почтовый адрес пользователем или группой через получение пользователя/группы. Например, мы можем получить определенную группу через REST ниже:
https://graph.microsoft.com/v1.0/groups ?$filter=mail+eq+'[email protected]»
Если электронная почта мы обеспечиваем пользователь, то ответ будет иметь пустое значение, иначе он возвращает информацию для этой группы.
И заставить член определенной группы, мы можем сделать запрос с возвращением ид по вышеуказанной заявке:
https://graph.microsoft.com/v1.0/groups/ {GroupID}/члены
А вот код, чтобы получить группу и его членов для вашей справки. И я рекомендую вам сделать REST через HttpClient, потому что он более гибкий и эффективный.
общественного асинхронной Задача GetGroup (строка MailAddress) {
var groups = await graphserviceClient.Groups.Request().Top(10).GetAsync();
foreach (var group in groups.CurrentPage)
{
Console.WriteLine(group.Mail);
if (mailAddress.Equals(group.Mail))
return group.Id;
}
while (groups.NextPageRequest != null)
{
groups = await groups.NextPageRequest.GetAsync();
foreach (var group in groups.CurrentPage)
{
Console.WriteLine(group.Mail);
if (mailAddress.Equals(group.Mail))
return group.Id;
}
}
return null;
}
public async void GetMembers(string groupId)
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "bearer " + _accessToken);
string serviceURL = String.Format("https://graph.microsoft.com/v1.0/groups/{0}/members?$select=mail", groupId);
var response = client.GetAsync(serviceURL).Result;
JObject json = JObject.Parse(response.Content.ReadAsStringAsync().Result);
foreach (var mail in json["value"].Values("mail"))
{
Console.WriteLine(mail);
}
}
обновление
Мы должны иметь "Group.Read.All" область, чтобы прочитать группы:
Спасибо. Кажется, что api https://graph.microsoft.com/v1.0/groups?$filter=mail+eq+'[email protected] api требует одобрения уровня администратора. Есть ли способ сделать это с помощью проверки подлинности на уровне пользователя? – GraphUser2016
Нет. Мы не можем получить информацию о группе без утверждения уровня администратора. Однако можно завершить решение с помощью аутентификации на уровне пользователя. Нам просто нужно убедиться, что приложение имеет область «Group.Read.All». См. Снимок экрана в предложении выше. –
Group.Read, All требует разрешения администратора. Мы работаем над некоторыми новыми групповыми разрешениями, позволяющими пользователям соглашаться. –