I Mobile App Services supportano l'autenticazione federata tramite molteplici provider, quali Twitter, Facebook, Microsoft Account, Google e Azure Active Directory. L'SDK (sia lato client che server) permette di interfacciarsi tramite questi provider con pochissimi passi, e senza che siamo costretti a conoscere i dettagli implementativi del protocollo OAuth. Tutto ciò che dobbiamo fare è seguire i passaggi descritti nella documentazione a questo indirizzo:
http://aspit.co/a7c
Le operazioni di autenticazione vengono gestite da un servizio chiamato Gateway che si occupa di acquisire un token dal provider selezionato e di utilizzarlo per rilasciare il cosiddetto Zumo-Token, utilizzato per autenticare le richieste provenienti dal device.

Uno dei compiti del Gateway è anche quello di mantenere un database con i token del provider esterno, così che questi possano essere utilizzati per impersonare l'utente in una chiamata. Immaginiamo per esempio di avere un utente autenticato con Twitter e di voler effettuare un tweet con il suo account. LinqToTwitter è una libreria che rende molto semplice questa operazione, ed è disponibile tramite NuGet:
install-package LinqToTwitter
Il primo passo è quello di interrogare il Gateway e recuperare il token originariamente emesso da Twitter, che contiene a sua volta l'AccessToken e l'AccessTokenSecret necessari per la chiamata.
var credentials = await ((MobileAppUser)this.User) .GetIdentityAsync<TwitterCredentials>();
A questo punto possiamo costruire un IAuthorizer, ossia il componente di LinqToTwitter che incapsula le credenziali utente e della nostra app:
var authorizer = new SingleUserAuthorizer() { CredentialStore = new SingleUserInMemoryCredentialStore() { ConsumerKey = "<put your ConsumerKey here>", ConsumerSecret = "<put your ConsumerSecret here>", AccessToken = credentials.AccessToken, AccessTokenSecret = credentials.AccessTokenSecret } };
Possiamo recuperare AccessToken e AccessTokenSecret dalle credenziali ottenute in precedenza, mentre ConsumerKey e ConsumerSecret sono le chiavi fornite da Twitter quando abbiamo registrato l'app presso il portale sviluppatori.
Grazie a questo componente, siamo finalmente pronti a inviare il tweet tramite il metodo TweetAsync di TwitterContext.
var context = new TwitterContext(authorizer); await context.TweetAsync("Hello World! This is a test tweet!");
Ovviamente, affinché questa operazione abbia successo, è necessario che l'app sia configurata con diritti di scrittura sulla timeline dell'utente.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Path addizionali per gli asset in ASP.NET Core MVC
Ricevere notifiche sui test con Azure Load Testing
Autenticazione di git tramite Microsoft Entra ID in Azure DevOps
Usare il colore CSS per migliorare lo stile della pagina
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Creare una libreria CSS universale: i bottoni
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Generare una User Delegation SAS in .NET per Azure Blob Storage
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Potenziare la ricerca su Cosmos DB con Full Text Search
Gestione file Javascript in Blazor con .NET 9