Popolamento avatar utente con Microsoft Graph Oauth2

Ciao a tutti gli amici di Discourse,

Ho utilizzato 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 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:

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

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, sembra che l’endpoint /me non includa l’URL dell’avatar per impostazione predefinita. Anche se fosse possibile recuperare la risorsa profilePhoto, 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 :cry:. Mi piacerebbe però essere smentito!

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 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

…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/” & 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