# Popolamento avatar utente con Microsoft Graph Oauth2

**URL:** https://meta.discourse.org/t/populating-user-avatars-with-microsoft-graph-oauth2/191074
**Category:** SSO
**Created:** [20 Maggio 2021, 1:44pm UTC](https://meta.discourse.org/t/populating-user-avatars-with-microsoft-graph-oauth2/191074 "2021-05-20T13:44:19Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![adamgpope](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/adamgpope/32/121658_2.png) [@adamgpope](https://meta.discourse.org/u/adamgpope)
#### Post date: [20 Maggio 2021, 1:44pm UTC](https://meta.discourse.org/t/populating-user-avatars-with-microsoft-graph-oauth2/191074/1 "2021-05-20T13:44:19Z")

</div>

Ciao a tutti gli amici di Discourse,

Ho utilizzato [discourse-oauth2-basic](https://github.com/discourse/discourse-oauth2-basic) per permettere ai nostri membri di accedere e popolare automaticamente i campi email, nome completo e nome utente dai loro account organizzativi Office365. Tuttavia, sto avendo difficoltà a far apparire l’avatar e mi chiedevo se qualcuno abbia avuto successo in questo.

Le [linee guida di Graph qui](https://docs.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-1.0) suggeriscono che l’URL per l’avatar dovrebbe essere disponibile in photo/$value; l’ho inserito ma non viene restituito e non vedo errori nei log.

Le mie impostazioni attuali sono:

 ![image](https://global.discourse-cdn.com/meta/original/3X/5/9/59501b01983c1bbff338555b1a89b4e2c8619422.png)

…Ho anche provato ad aggiungere ‘photo’ nei campi `oauth2 callback user info paths` e `oauth2 authorize options`, ma senza successo. Qualsiasi aiuto è molto apprezzato 😉

---

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [20 Maggio 2021, 1:55pm UTC](https://meta.discourse.org/t/populating-user-avatars-with-microsoft-graph-oauth2/191074/2 "2021-05-20T13:55:15Z")

</div>

Il plugin OAuth2 consente di richiedere dati da un solo endpoint (l’`oauth2 user json url`). Tutte le impostazioni `json ***path` si riferiscono a** posizioni all’interno dei dati JSON**, non a endpoint API separati.

Dando un’occhiata rapida alla [documentazione dell’API graph.microsoft.com](https://docs.microsoft.com/en-us/graph/api/user-get?view=graph-rest-1.0&tabs=http), sembra che l’endpoint `/me` non includa l’URL dell’avatar per impostazione predefinita. Anche **se** fosse possibile [recuperare la risorsa profilePhoto](https://docs.microsoft.com/en-us/graph/api/resources/profilephoto?view=graph-rest-1.0), sembra che restituisca un “ID foto” anziché un URL.

Quindi, purtroppo, credo che sarebbe necessario sviluppare un plugin di autenticazione personalizzato per far funzionare questa cosa 😢. Mi piacerebbe però essere smentito!

---

<div class="post-metadata">

### Author: ![adamgpope](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/adamgpope/32/121658_2.png) [@adamgpope](https://meta.discourse.org/u/adamgpope)
#### Post date: [21 Maggio 2021, 11:18am UTC](https://meta.discourse.org/t/populating-user-avatars-with-microsoft-graph-oauth2/191074/3 "2021-05-21T11:18:26Z")

</div>

Grazie per averlo verificato, @david. Mi ha spinto a vedere se potevo ‘recuperarlo’ nel JSON dell’utente. Sembra che il [parametro di query OData expand](https://docs.microsoft.com/en-us/graph/query-parameters#error-handling-for-query-parameters) non sia supportato per la foto, anche se viene restituita come URL se ci si aggiunge /$value:

> …non puoi usare `$expand` sulla relazione `user/photo`.

Non sono riuscito a trovare un modo per invertire la cosa; quindi, invece di `https://graph.microsoft.com/beta/me?$expand=photo`, qualcosa come `https://graph.microsoft.com/beta/me/photo/$value?$expand=mail,displayName`. Sbuffo, gioco finito, sfogo.

Forse potremmo usare la posizione ‘mail’ nei dati JSON per costruire l’URL della foto, che è costantemente:

> [https://tenant-my.sharepoint.com/User%20Photos/Profile%20Pictures/adam\_pope\_arup\_com\_LThumb.jpg](https://tenant-my.sharepoint.com/User%20Photos/Profile%20Pictures/adam_pope_arup_com_LThumb.jpg)

…quindi potremmo concatenare i tre elementi nel campo con la sintassi corretta? Il mio tentativo goffo qui non ha funzionato, come previsto:

“[https://tenant-my.sharepoint.com/User%20Photos/Profile%20Pictures/](https://tenant-my.sharepoint.com/User%20Photos/Profile%20Pictures/)” & mail & “\_LThumb.jpg”

…o forse un altro modo - sto chiaramente aggrappandomi a pagliuzze - sarebbe aggiungere l’endpoint della foto al campo URL json dell’utente oauth2 con qualcosa come:

[https://graph.microsoft.com/v1.0/me?https://graph.microsoft.com/v1.0/me/photo](https://graph.microsoft.com/v1.0/me?https://graph.microsoft.com/v1.0/me/photo)
