メールアドレスがユーザーかグループかを検索することで、メールアドレスがユーザーかグループかどうかを判断できます。例えば、我々は以下の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、すべてには管理者権限が必要です。ユーザーが同意するための新しいグループアクセス許可を作成中です。 –