Vai al contenuto principale

Ottenere Access Tokens utilizzando il flusso OAuth a 3 vie

Per eseguire azioni per conto di un altro utente, è necessario ottenere i suoi access token. Gli access token indicano l’account X per conto del quale viene inviata la richiesta; per poterli ottenere, l’utente deve prima concederti l’accesso. Questi token non scadono, ma possono essere revocati dall’utente in qualsiasi momento. X consente di ottenere access token utente tramite il flusso OAuth a 3 vie, che permette alla tua applicazione di ottenere un access token e il relativo secret reindirizzando un utente su X e facendogli autorizzare la tua applicazione. Questo flusso è quasi identico a quello descritto in implementare Log in with X, con due eccezioni:
  • L’endpoint GET oauth/authorize viene utilizzato al posto di GET oauth/authenticate.
  • All’utente verrà sempre richiesto di autorizzare l’accesso alla tua applicazione, anche se l’accesso era stato precedentemente concesso.  
Prima di iniziare, dovrai verificare le autorizzazioni della tua applicazione e conoscere le consumer key e la callback URL. Se non disponi di una callback URL o di un’interfaccia utente pubblicamente accessibile, prendi in considerazione l’uso dell’autorizzazione basata su PIN, pensata per le applicazioni che non possono accedere o incorporare un browser web per reindirizzare l’utente dopo l’autorizzazione.  I possibili stati dell’interazione di accesso a 3 vie sono illustrati nel seguente diagramma di flusso:

Panoramica del processo

A livello generale, il processo OAuth a 3 fasi:
  1. Crea una richiesta affinché un’applicazione consumer ottenga un request token.
  2. Fa autenticare l’utente e invia all’applicazione consumer un request token.
  3. Converte il request token in un access token utente utilizzabile.
Chiarimento della terminologia Nella guida seguente, potresti vedere termini diversi riferirsi alla stessa cosa. Credenziali client:
  • App Key === API Key === Consumer API Key === Consumer Key === Customer Key === oauth_consumer_key
  • App Key Secret === API Secret Key === Consumer Secret === Consumer Key === Customer Key === oauth_consumer_secret
  • Callback URL === oauth_callback  
Credenziali temporanee:
  • Request Token === oauth_token
  • Request Token Secret === oauth_token_secret
  • oauth_verifier  
Credenziali del token:
  • Access token === Token === oauth_token risultante
  • Access token secret === Token Secret === oauth_token_secret risultante

Passaggi della procedura

Passaggio 1: POST oauth/request_token Crea una richiesta per consentire a un’app consumer di ottenere un request token. L’unico parametro specifico in questa richiesta è oauth_callback, che deve essere una versione URL encoded dell’URL a cui desideri che l’utente venga reindirizzato al termine del passaggio 2. I restanti parametri vengono aggiunti dal processo di firma OAuth. Nota: qualsiasi URL di callback che utilizzi con l’endpoint POST oauth/request_token dovrà essere configurato nelle impostazioni della tua developer App, nella pagina dei dettagli dell’App del developer portal.   La richiesta include: oauth_callback="https%3A%2F%2FyourCallbackUrl.com" oauth_consumer_key="cChZNFj6T5R0TigYB9yd1w"  La tua App dovrebbe esaminare lo stato HTTP della risposta. Qualsiasi valore diverso da 200 indica un errore. Il corpo della risposta conterrà i parametri oauth_token, oauth_token_secret e oauth_callback_confirmed. La tua App dovrebbe verificare che oauth_callback_confirmed sia true e archiviare gli altri due valori per i passaggi successivi.   La risposta include oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0 oauth_token_secret=veNRnAWe6inFuo8o2u8SLLZLjolYDmDP7SzL0YfYI oauth_callback_confirmed=true Passaggio 2: GET oauth/authorize Fai autenticare l’utente e invia all’app consumer un request token.   URL di esempio a cui reindirizzare l’utente: https://api.x.com/oauth/authorize?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0 Dopo un’autenticazione riuscita, il tuo callback_url riceverà una richiesta contenente i parametri oauth_token e oauth_verifier. La tua applicazione dovrebbe verificare che il token corrisponda al request token ricevuto nel passaggio 1.   Richiesta dal redirect del client: https://yourCallbackUrl.com?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0&oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY Passaggio 3: POST oauth/access_token Converti il request token in un access token utilizzabile. Per trasformare il request token in un access token utilizzabile, la tua applicazione deve effettuare una richiesta all’endpoint POST oauth/access_token, contenente il valore oauth_verifier ottenuto nel passaggio 2. Il request token viene anche passato nella parte oauth_token dell’header, ma questo verrà aggiunto dal processo di firma.   La richiesta include: POST /oauth/access_token oauth_consumer_key=cChZNFj6T5R0TigYB9yd1w oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0 oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY Una risposta positiva contiene i parametri oauth_token, oauth_token_secret. Il token e il token secret devono essere archiviati e utilizzati per future richieste autenticate alla X API. Per determinare l’identità dell’utente, usa GET account/verify_credentials.   La risposta include: oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4 oauth_token_secret=PbKfYqSryyeKDWz4ebtY3o5ogNLG11WJuZBc9fQrQo Utilizzo di queste credenziali per le richieste OAuth 1.0a (applicazione-utente) Ora che hai ottenuto gli access token utente, puoi usarli per accedere ad alcune API, ad esempio POST statuses/update, per creare Tweet per conto degli utenti.   La richiesta include: POST statuses/update.json oauth_consumer_key=cChZNFj6T5R0TigYB9yd1w oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4

Esempio d’uso

Il flusso standard è basato sul web e utilizza il flusso di autorizzazione OAuth a 3 leg. Gli screenshot riportati qui fanno parte di un esempio di cui puoi consultare il sorgente su https://github.com/xdevplatform/twauth-web. A un certo punto dell’applicazione, dovrai reindirizzare a X per autorizzarla.
Quando reindirizzi a X con il request token, all’utente verrà richiesto di autorizzare la tua applicazione.
Dopo l’autorizzazione, l’utente verrà reindirizzato alla callback URL fornita quando hai generato il request token. Userai questa per ottenere l’access token permanente per l’utente e archiviarlo localmente.
I