Nello scorso articolo introduttivo ad ASP.NET Identity abbiamo visto che uno dei claim che possiamo memorizzare dopo l'autenticazione tramite Facebook è il token restituito. Questo dato può essere sfruttato per comunicare con i servizi esposti da Facebook stesso e recuperare informazioni aggiuntive sul nostro utente.
Per rendere possibile l'integrazione con Facebook è necessario installare il package Facebook C# SDK tramite NuGet. Una volta completata l'operazione, il primo passo è creare una classe che rappresenterà gli amici del nostro utente:
public class FacebookFriendsViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Picture { get; set; }
}In questo esempio abbiamo considerato solo nome, cognome e immagine del profilo, ma il procedimento è analogo per qualsiasi altro campo tra quelli disponibili. L'interrogazione ai servizi di Facebook può avvenire in un'apposita action, per ovvie ragioni riservata ai soli utenti autenticati, visto che dobbiamo accedere ai dati personali dell'identità corrente:
[Authorize]
public async Task<ActionResult> FacebookFriends()
{
// recupero il token
var claimsforUser = await UserManager
.GetClaimsAsync(User.Identity.GetUserId());
var access_token = claimsforUser
.FirstOrDefault(x => x.Type == "FacebookToken").Value;
// invoco l'api di Facebook
var fb = new FacebookClient(access_token);
dynamic myInfo = fb.Get(
"me?fields=friends.fields(first_name,last_name,picture.height(100).width(100))"
);
// popolo la friendList
var friendsList = new List<FacebookFriendsViewModel>();
foreach(var friend in myInfo.friends.data)
{
friendsList.Add(new FacebookFriendsViewModel()
{
FirstName = friend.first_name,
LastName = friend.last_name,
Picture = friend.picture.data.url,
});
}
return View(friendsList);
}Tramite la classe UserManager recuperiamo dalla lista dei claim il Token di Facebook, necessario per istanziare un nuovo oggetto FacebookClient. Quest'ultimo espone il metodo Get che può essere utilizzato per ottenere le informazioni che ci interessano. Un utile strumento per costruire gli URL delle nostre richieste, come quello della porzione di codice riportata sopra, è Facebook Graph Explorer, disponibile all'URL http://aspit.co/aqw, che permette in maniera grafica di costruire la stringa di interrogazione.
Il resto del codice semplicemente itera nel JSON restituito dal metodo Get e popola una Lista di FacebookFriendsViewModel da utilizzare come model per la view.
Se abbiamo eseguito tutto correttamente, dovremmo essere in grado di visualizzare una pagina simile alla seguente:

Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare zizmor per rendere più sicuri i workflow di GitHub
Caching risposte AI con Microsoft.Extensions.AI
Avviare rapidamente un container con Azure Container Apps Express
Gestione opzioni colonna nella Blazor QuickGrid
Validare i dati di una colonna JSON in SQL Server
Filtrare i dati in ASP.NET Core usando OpenTelemetry su Azure Monitor
Middleware e telemetria alle chiamate AI con Microsoft.Extensions.AI
Eseguire una ExecuteUpdateAsync senza usare un'expression con Entity Framework
GitHub Quick Review per la valutazione dello stato di compliance dell'organizzazione aziendale
Gestione dei prompt file a livello di organizzazione aziendale in GitHub
Centralizzare e governare MCP server e Skill con Azure API Center
Utilizzare @property per animare nativamente un oggetto HTML tramite CSS
I più letti di oggi
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Permettere il Drag-and-drop solo su zone predefinite con Silverlight 2.0
- Accedere a dati esposti con WebService con Silverlight 1.0
- Utilizzare dati in formato XML in XAML


