2017-05-22 2 views
0

Ich habe untersucht, wie Sie einen Benutzer aus einer Azure AD-Gruppe mithilfe der Microsoft Graph-API (die auf nuget verfügbare dotnet/C# -Bibliothek) hinzufügen (und später entfernen) können.MS Graph API C# Benutzer zur Gruppe hinzufügen

Nuget MS Graph API

alles andere um Ignoriert immer eine verbunden GraphServiceClient usw. Ich versuche Code sehr ähnlich wie die Probe unten bekommen, keine Ausnahme (was darauf hindeutet, sind die Dinge in Ordnung), aber wenn ich die Gruppe wieder über die API, es hat noch keine Mitglieder!

Quickwatch of returned group object after modification attempt

Interessanter (Nebenbei), wenn ich für memberOf Eigenschaft auf dem user Objekt stellen und sagen, dass es es zu erweitern, kommt es wieder noch null.

var user = await client.Users[userPrincipalName] 
      .Request() 
       .Select("id,memberOf") 
       .Expand("memberOf") 
        .GetAsync(); 

var group = await client.Groups[groupId] 
       .Request() 
       .Select("members") 
        .Expand("members") 
        .GetAsync(); 

group.Members.Add(user); 

await client.Groups[groupId].Request().UpdateAsync(group); 

// userPrincipalName => "[email protected]" 
// groupId => the object GUID for the group 

Weiß jemand, was ich hier falsch mache? Die docs habe ich mit diesem Code kommen wurden auf die folgenden Dokumente auf die Links basiert:

API doc for 'group'

Adding a member to a group

Auch habe ich versucht, den Ansatz zu gestalten, auf die Lösung hier, um die Einstellung Lizenzen vorgeschlagen für Benutzer:

Assign user license via Graph API

Wie üblich dank für jede Hilfe.

Peter

Zusätzliche

Ich habe auch versucht, um in dem Grafik-API Stossen auf potenziell suchen, um die .Members Eigenschaft/Ressource statt der Gruppe selbst zu aktualisieren:

await client.Groups[groupId].Members.Request(). // <-- Only has GetAsync() 

Aber es hat nur die GetAync() Methode zur Verfügung.

auf Antwort Aktualisiert basierend

var usersGroups = await client.Users[userPrincipalName].MemberOf.Request().GetAsync(); 

if (!usersGroups.Any(g => g is Group && g.Id == groupId)) 
{ 
    // User is not a member of the group, add them. 
    var user = await client.Users[userPrincipalName].Request().Select("id").GetAsync(); 
    await client.Groups[groupId].Members.References.Request().AddAsync(user); 
} 

ich über den Code-Snippet hinzugefügt habe die Antwort basierend auf, wie ich es auf dem Punkt denke in Bezug auf die Frage beantwortet Hinzufügen von Mitgliedern.

Danke an Nan Yu für die Antwort.

Antwort

2

Um Benutzer zu Gruppen hinzufügen, könnten Sie verwenden:

User userToAdd = await graphClient.Users["objectID"].Request().GetAsync(); 
await graphClient.Groups["groupObjectID"].Members.References.Request().AddAsync(userToAdd); 

um Mitglieder einer Gruppe zu erhalten:

 List<ResultsItem> items = new List<ResultsItem>(); 

     // Get group members. 
     IGroupMembersCollectionWithReferencesPage members = await graphClient.Groups[id].Members.Request().GetAsync(); 

     if (members?.Count > 0) 
     { 
      foreach (User user in members) 
      { 
       // Get member properties. 
       items.Add(new ResultsItem 
       { 
        Properties = new Dictionary<string, object> 
        { 
         { Resource.Prop_Upn, user.UserPrincipalName }, 
         { Resource.Prop_Id, user.Id } 
        } 
       }); 
      } 
     } 

Holen Sie sich die aktuelle Benutzergruppe ist ein direktes Mitglied, könnten Sie versuchen:

IUserMemberOfCollectionWithReferencesPage memberOfGroups = await graphClient.Users["[email protected]"].MemberOf.Request().GetAsync(); 

      if (memberOfGroups?.Count > 0) 
      { 
       foreach (var directoryObject in memberOfGroups) 
       { 

        // We only want groups, so ignore DirectoryRole objects. 
        if (directoryObject is Group) 
        { 
         Group group = directoryObject as Group; 
         items.Add(new ResultsItem 
         { 
          Display = group.DisplayName, 
          Id = group.Id 
         }); 
        } 

       } 
      } 
+0

Ich habe diesen "GroupService" noch nie zuvor gesehen, aber die anderen Sachen scheinen Sinn zu ergeben! :) – peteski

+0

Entschuldigung, ich dachte, Sie verwenden https://github.com/microsoftgraph/aspnet-snippets-sample. In diesem Codebeispiel gibt es eine GroupService-Klasse. Wenn Sie dieses Codebeispiel nicht verwenden. Sie könnten IGroupMembersCollectionWithReferencesPage members = await graphClient.Groups [id] .Members.Request() verwenden. GetAsync(); um Gruppenmitglieder zu bekommen. Bitte überprüfen Sie die bearbeitete Antwort. –

+0

Entschuldigung, Codebeispiel ist hier: https: //github.com/microsoftgraph/aspnet-snippets-sample –

Verwandte Themen