microsoftgraph / microsoftgraph/msgraph-sdk-java

expand of appRoleAssignments on user get call yields no results

Ouverte
#2,242 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Needs: Attention :wave: type:question
Langage dominant
Java
Étoiles
444
Forks
154
Merge moyen
18 h 28 min
PR mergées (30 j)
4

Description

Describe the bug

I was trying to get a user together with it's appRoleAssignments in one call. The documentation is pointing out that the expand feature for appRoleAssignments is supported. But it doesn't work.

Expected behavior

I would expect the expand to return results.

How to reproduce
            User user = graphClient.usersWithUserPrincipalName(username).get(
                rc -> {
                    rc.queryParameters.select = new String[]{"id", "userPrincipalName", "displayName", "givenName", "surname", "accountEnabled"};
                    rc.queryParameters.expand = new String[]{"appRoleAssignments"};
                }
            );

or

graphClient.users().byUserId(username).get(
                rc -> {
                    rc.queryParameters.select = new String[]{"id", "userPrincipalName", "displayName", "givenName", "surname", "accountEnabled"};
                    rc.queryParameters.expand = new String[]{"appRoleAssignments"};
                }
            );
SDK Version

6.22.0

Latest version known to work for scenario above?

No response

Known Workarounds

For now I have to write this code to get it done:

            var user = graphClient.usersWithUserPrincipalName(username).get(
                rc -> rc.queryParameters.select = new String[]{"id", "userPrincipalName", "displayName", "givenName", "surname", "accountEnabled"}
            );
            user.setAppRoleAssignments(getAllAppRoleAssignments(user.getId())); // an 'expand' of appRoleAssignments in the above call gave an empty array :| ...
            return user;

    private List<AppRoleAssignment> getAllAppRoleAssignments(String userId) {
        var result = new ArrayList<AppRoleAssignment>();
        var page = graphClient.users().byUserId(userId).appRoleAssignments().get();
        while (page != null) {
            result.addAll(Optional.ofNullable(page.getValue()).orElse(emptyList()));
            var odataNextLink = page.getOdataNextLink();
            if (StringUtils.isBlank(odataNextLink)) {
                break;
            } else {
                page = graphClient.users().byUserId(userId).appRoleAssignments().withUrl(odataNextLink).get();
            }
        }
        return result;
    }
Debug output
Click to expand log ```
</details>


### Configuration

_No response_

### Other information

_No response_

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par reproduire les deux appels GET utilisateur de l’issue avec l’expansion appRoleAssignments, puis comparez leurs réponses avec la requête séparée appRoleAssignments. Vérifiez si le comportement d’expansion documenté est pris en charge par le service Graph et par la version 6.22.0 du SDK ; le travail est considéré comme terminé lorsque la requête combinée renvoie les affectations attendues ou que la limitation est documentée.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java
Domaine
api
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.