I token d'accesso della Pagina e utente predefiniti sono di breve durata, con validità di poche ore; tuttavia, puoi scambiare un token di breve durata con uno di lunga durata.
Quando usi l'SDK per iOS, Android o JavaScript, l'SDK aggiorna automaticamente i token se la persona ha utilizzato la tua app negli ultimi 90 giorni. Le app mobili native che utilizzano gli SDK di Facebook dispongono di token d'accesso utente di lunga durata, validi per circa 60 giorni. Questi token vengono aggiornati una volta al giorno, quando l'utente che utilizza la tua app invia una richiesta ai server di Facebook. Se non viene eseguita alcuna richiesta, il token scade dopo 60 giorni e l'utente dovrà ripetere il flusso di accesso per ottenerne uno nuovo.
Versione dell'API Graph più recente: v21.0
Se hai bisogno di un token d'accesso utente di lunga durata, puoi generarne uno da un token d'accesso utente di breve durata. Un token di lunga durata è valido circa 60 giorni.
Avrai bisogno dei seguenti elementi:
Interroga l'endpoint GET oauth/access_token
.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/access_token? grant_type=fb_exchange_token& client_id={app-id}& client_secret={app-secret}& fb_exchange_token={your-access-token}"
{ "access_token":"{long-lived-user-access-token}", "token_type": "bearer", "expires_in": 5183944 //The number of seconds until the token expires }
Il flusso di lavoro per generare un token d'accesso utente di lunga durata è il seguente:
Una volta ottenuto il token di lunga durata, lo puoi usare dal server o rimandarlo al client e utilizzarlo da lì.
Non puoi utilizzare un token scaduto per richiedere un token di lunga durata. Se il token è scaduto, l'app deve chiedere all'utente di ripetere il flusso di accesso per rigenerare un nuovo token d'accesso di breve durata.
Effettua la chiamata dal tuo server, non da un client. La chiave segreta è inclusa nella chiamata all'API, perciò la richiesta non dovrà essere lato client. Implementa un codice lato server per eseguire la richiesta e passa la risposta, contenente il token di lunga durata, al codice lato client. La stringa sarà diversa da quella del token originale, perciò se li stai memorizzando sostituisci quello precedente.
Non usare gli stessi token di lunga durata su più client web (ovvero, se l'utente accede da più computer). Usali invece sul server per creare un codice e ottenere un token di lunga durata anche sul client. Vedi le informazioni riportate di seguito sulla creazione di token di lunga durata da token di lunga durata lato server.
Se hai bisogno di un token d'accesso della Pagina di lunga durata, puoi generarne uno da un token d'accesso utente di lunga durata. Il token d'accesso della Pagina di lunga durata non ha una data di scadenza e scade o non è più valido solo a determinate condizioni.
Avrai bisogno dei seguenti elementi:
Interroga l'endpoint GET {app-scoped-user-id}?accounts
.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/{app-scoped-user-id}/accounts? access_token={long-lived-user-access-token}"
{ "data":[ { "access_token":"{long-lived-page-access-token}", "category":"Brand", "category_list":[ { "id":"1605186416478696", "name":"Brand" } ], "name":"Cute Kitten Page", "id":"{page-id}", "tasks":[ "ANALYZE", "ADVERTISE", "MODERATE", "CREATE_CONTENT", "MANAGE" ] } ], "paging":{ "cursors":{ "before":"MTM1MzI2OTg2NDcyODg3OQZDZD", "after":"MTM1MzI2OTg2NDcyODg3OQZDZD" } } }
Facebook fornisce un'opzione per ottenere token d'accesso di lunga durata per le app, per evitare di attivare i sistemi antispam automatici di Facebook. Le app che:
In linea generale, puoi ottenere un token di lunga durata dal client nei modi seguenti:
Interroga l'endpoint GET oauth/client_code
. L'URI di reindirizzamento deve essere il valore esatto impostato nella Dashboard gestione app nella scheda Facebook Login > Impostazioni client > Impostazioni OAuth.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/client_code? client_id={app-id}& client_secret={app-secret}& redirect_uri={app-redirect-uri}& access_token={long-lived-user-access-token}"
{ "code":"{code-for-your-client}" }
Una volta ottenuto il codice dal server di Facebook invialo al client tramite un canale sicuro. Successivamente, devi inviare una richiesta dal client all'endpoint /oauth/access_token
:
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/access_token? code={code-for-your-client}& client_id={app-id}& redirect_uri={app-redirect-uri}& machine_id= {your-client-machine-id}"
machine_id
è un parametro facoltativo che identifica e traccia i client e viene utilizzato per la sicurezza e la prevenzione dallo spam. È un valore per client, non per utente. Se hai già effettuato chiamate per ottenere un codice e ti è stato fornito un machine_id
, devi includerlo nella tua richiesta di codice.
{ "access_token":"{long-lived-access-token}", "expires_in":5183944, //The number of seconds until the token expires "machine_id":"{your-client-machine-id}" }
Il flusso di lavoro per generare un token di lunga durata è il seguente: