사용자/그룹 검색을 통해 메일 주소가 사용자인지 또는 그룹인지를 결정할 수 있습니다. 예를 들어, 우리는 아래의 REST를 통해 특정 그룹을 얻을 수 있습니다 :
https://graph.microsoft.com/v1.0/groups ?$filter=mail+eq+'[email protected] '다음 우리가 제공하는 이메일이 사용자 인 경우
, 응답은 빈 값을 가지며, 그렇지 않으면이 그룹에 대한 정보를 반환합니다.
그리고 특정 그룹의 구성원을 얻기 위해, 우리는 위의 요청에 의해 ID를 리턴으로 요청 할 수 있습니다 :
https://graph.microsoft.com/v1.0/groups/ {그룹 ID를}/회원 여기
그리고 그룹을 얻을 수있는 코드 및 해당 회원을 참조하십시오. 보다 유연하고 효율적이기 때문에 HttpClient를 통해 REST를 만드는 것이 좋습니다.
공공 비동기 작업 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"범위가 필요
:
을
감사합니다. https://graph.microsoft.com/v1.0/groups?$filter=mail+eq+'[email protected] 'API에는 관리자 수준의 승인이 필요합니다. 사용자 수준 인증으로이를 수행 할 수있는 방법이 있습니까? – GraphUser2016
아니요. 관리자 수준의 승인없이 그룹 정보를 검색 할 수 없습니다. 그러나 사용자 수준 인증을 사용하여 솔루션을 완성 할 수도 있습니다. 앱에 "Group.Read.All"범위가 있는지 확인하면됩니다. 위 제안의 스크린 샷을 참조하십시오. –
Group.Read, 모두에는 관리자 권한이 필요합니다. 사용자가 동의 할 수 있도록 몇 가지 새로운 그룹 권한을 개발 중입니다. –