Impersonare l'utente in una chiamata Twitter con una Azure Mobile App

di Marco De Sanctis, in Azure Mobile App,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi