[VSO] Obtenir facilement les informations des utilisateurs Visual Studio Online

Petite question de notre expert “objets connectés”: comment récupérer les informations (photo et email) des utilisateurs de son compte Visual Studio Online?

En regardant les API disponible ici, il est “impossible” de récupérer de façon simple les informations d’autres utilisateurs (l’API se limite à l’utilisateur courant).

Mais comme Visual Studio Online est très bien fait, il est possible de récupérer certaines requêtes :)

Activer l’authentification alternative

Dans un premier temps il va falloir activer l’authentification alternative afin de pouvoir utiliser les APIs.

Direction la subscription, dans la partie My Profile > CREDENTIALS > Enable alternate credentials > enter les identifiants > Sauvegarder

image

 

Place au script

Il est désormais possible d’attaquer le script!

Il est assez simple, il suffira de requêter cette uri https://DOMAINE.vssps.visualstudio.com/apiuser/GetAccountUsers et le serveur retournera un beau JSON comportant toutes les données nécessaires :

image

 

Pour obtenir la photo du compte il suffira de requêter cette url https://DOMAINE.vssps.visualstudio.com/profile/Avatar?identityId=USERID. USERID est obtenu par la requête précédente.

Petit script pour formaliser le tout

$username = "username"
$password = "password"
$domain = "nomdelasubscription"
 
#prepare
$data = ("{0}:{1}" -f $username,$password)
$data = [System.Text.Encoding]::UTF8.GetBytes($data)
$data = [System.Convert]::ToBase64String($data)
$header = @{Authorization=("Basic {0}" -f $data)}
 
#query
$accounts = Invoke-RestMethod -Uri "https://$domain.vssps.visualstudio.com/apiuser/GetAccountUsers" -headers $header -Method Get
ForEach ($account In $accounts.Users) {
      $imagePath = "https://$domain.vssps.visualstudio.com/profile/Avatar?identityId=" + $account.UserId
      $account | Add-Member -MemberType NoteProperty –Name ImagePath –Value $imagePath
}

Et voilà c’est simple et efficace :)

Tips

Un compte utilisateur du VSO est obligatoire pour pouvoir profiter des APIs. Ici nul besoin d’un compte avec de grands privilèges, un Stakeholder (c’est gratuit) fera très bien l’affaire et permettra de prendre aucun risque.

En tant que Stakeholder l’utilisateur n’aura pas accès à l’onglet Users de la subscription, mais il va pouvoir tout de même avoir toutes les informations de l’onglet via la requête précédente……….

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus