Token d'accesso

Un token d'accesso è una stringa opaca che identifica un utente, un'app o una Pagina e può essere usata dall'app per le chiamate API Graph. Quando un utente accede a un'app con Facebook Login e approva la richiesta di autorizzazioni, l'app ottiene un token d'accesso che consente un accesso temporaneo e sicuro alle API di Facebook. Puoi usare diversi metodi per ottenere i token d'accesso.

Inoltre, i token includono informazioni sulla loro scadenza e sull'app che li ha generati. Dati i controlli sulla privacy, la maggior parte delle chiamate API su Facebook include un token d'accesso. Ne esistono diversi tipi, a seconda dell'uso:

Tipo di token d'accessoDescrizione

Token d'accesso dell'utente

È necessario quando un'app effettua una chiamata API per leggere, modificare o scrivere i dati Facebook di un utente per suo conto. Generalmente, questi token d'accesso si ottengono tramite una finestra di dialogo Accedi ed è necessario che l'utente consenta all'app di ottenerli.

Token d'accesso dell'app

Questo tipo di token d'accesso è necessario per modificare e leggere le impostazioni dell'app. Inoltre, può essere usato per pubblicare azioni Open Graph. Viene generato tramite una chiave segreta preconfigurata tra l'app e Facebook per essere usato nelle chiamate che modificano le impostazioni dell'app. Puoi ottenere un token d'accesso dell'app con una chiamata tra server.

Token d'accesso della Pagina

Questo tipo di token d'accesso è simile a quelli dell'utente, ma concede le autorizzazioni alle API che leggono, scrivono o modificano i dati relativi a una Pagina Facebook. Per ottenere un token d'accesso della Pagina è necessario iniziare ottenendo un token d'accesso utente e chiedendo l'autorizzazione o le autorizzazioni necessarie per la Pagina. Una volta ottenuto, potrai richiedere il token d'accesso della Pagina attraverso l'API Graph.

Token client

Il token client è un identificativo che puoi incorporare nei binari nativi mobili o nelle app per computer e serve per identificare la tua app. Non si tratta di un identificativo della chiave segreta poiché è incorporato nelle app. È usato per accedere a un numero limitato di API e si trova nella dashboard dell'app. Essendo usato raramente non approfondiremo l'argomento in questo documento. Maggiori informazioni sono disponibili nella documentazione relativa alle API che lo usano.

Token d'accesso dell'utente

Ogni piattaforma genera i token d'accesso attraverso diverse API, ma tutte seguono la stessa strategia di base per ottenerli:

Token di breve e lunga durata

I token d'accesso dell'utente possono essere di due tipi: di breve o di lunga durata. Generalmente, i primi durano in media due ore, mentre i secondi circa 60 giorni. Non affidarti completamente a queste medie che possono variare senza preavviso o avere una scadenza anticipata. Scopri di più nella sezione relativa alla gestione degli errori.

I token d'accesso generati all'accesso tramite web sono di breve durata, ma puoi convertirli in token di lunga durata con una chiamata API lato server e la chiave segreta.

Le app mobili che usano gli SDK di Facebook per iOS e Android ricevono per impostazione predefinita token di lunga durata.

Le app con accesso Standard all'API Marketing di Facebook che usano token di lunga durata ne ricevono altri privi di scadenza. Questi token non sono invalidati solo in base al tempo, ma possono esserlo per altri motivi. Lo stesso vale per i token d'accesso degli utenti del sistema in Business Manager.

I token sono dotati di portabilità

Una caratteristica importante dei token d'accesso è che sono dotati di portabilità. Una volta ottenuti, possono essere usati per effettuare chiamate da un client mobile, un browser web o dal tuo server ai server di Facebook. Se il token è ottenuto su un client, puoi inviarlo al server e usarlo nelle chiamate tra server. Se viene ottenuto attraverso una chiamata al server, puoi inviarlo a un client da cui eseguire le chiamate.

Sposta i token dal client al server in modo sicuro attraverso il protocollo HTTPS, proteggendo gli account degli utenti. Scopri di più sulle implicazioni dello spostamento dei token tra client e server.

Inoltre, usano metodi diversi per avviare il processo e includono funzionalità che consentono di gestire i token d'accesso per conto degli sviluppatori e degli utenti che concedono le autorizzazioni:

Android

L'SDK di Facebook per Android gestisce automaticamente i token d'accesso dell'utente attraverso la classe com.facebook.AccessToken. Scopri di più su come ottenerli implementando Facebook Login per Android. Puoi recuperare i token d'accesso dell'utente esaminando Session.getCurrentAccessToken.

Esempio di codice

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    accessToken = AccessToken.getCurrentAccessToken();
}

iOS

L'SDK di Facebook per iOS gestisce automaticamente i token d'accesso dell'utente attraverso la classe FBSDKAccessToken. Scopri di più su come ottenerli implementando Facebook Login per iOS. Puoi recuperare i token d'accesso esaminando FBSDKAccessToken.currentAccessToken.

Esempio di codice

- (void)viewDidLoad
{
  [super viewDidLoad];
  NSString *accessToken = [FBSDKAccessToken currentAccessToken];
}

Javascript

L'SDK di Facebook per JavaScript ottiene e usa i token d'accesso dell'utente in automatico attraverso i cookie del browser. Puoi recuperare i token d'accesso dell'utente chiamando FB.getAuthResponse, che nella risposta includerà la proprietà accessToken.

Esempio di codice

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    var accessToken = response.authResponse.accessToken;
  } 
} );

Visita la documentazione sugli SDK Facebook Web per un esempio di codice completo.

Web (senza JavaScript)

Se stai creando un'app web senza usare l'SDK di Facebook per JavaScript, sarà necessario generare un token d'accesso durante i passaggi descritti nel documento.

Token d'accesso dell'app

I token d'accesso dell'app sono usati per eseguire richieste alle API di Facebook per conto di un'app, anziché di un utente. In questo modo, puoi modificare i parametri dell'app, creare e gestire gli utenti test o consultare i dati statistici dell'app.

Limitazioni

Alcuni dati dell'utente normalmente visibili a un'app che esegue la richiesta con un token d'accesso dell'utente non sono sempre disponibili con i token d'accesso dell'app. Se consulti questi dati per sfruttarli nella tua app, usa un token d'accesso dell'utente invece di uno dell'app.

Se nelle impostazioni Avanzate della Dashboard gestione app l'app è impostata su Native/Desktop, i token d'accesso dell'app non sono considerati sicuri e non funzioneranno con le chiamate API. Questo poiché supponiamo che le app native o per computer abbiano una chiave segreta integrata (un token d'accesso dell'app generato tramite quella chiave non è sicuro).

Generazione di un token d'accesso dell'app

Per generare un token d'accesso dell'app, hai bisogno dei seguenti elementi:

Esempio di codice

curl -X GET "https://graph.facebook.com/oauth/access_token ?client_id={your-app-id} &client_secret={your-app-secret} &grant_type=client_credentials" 

La chiamata restituisce un token d'accesso dell'app che puoi usare al posto di quello dell'utente nelle chiamate API, come descritto sopra. Per motivi di sicurezza, il token d'accesso dell'app non deve avere una codifica fissa nel codice lato client, altrimenti chiunque carichi la tua pagina web o decompili l'app può avere accesso alla chiave segreta e modificare l'app. Questo implica che, per la maggior parte, userai il token d'accesso dell'app solo nelle chiamate tra server.

Tieni presente che la richiesta sfrutta la chiave segreta, pertanto non usare un codice lato client o un binario che può essere decompilato. È importante non condividere la chiave segreta con nessuno. Effettua la chiamata API usando esclusivamente un codice lato server.

Esiste un altro metodo per effettuare le chiamate API Graph senza usare un token d'accesso dell'app. Quando effettui una chiamata, puoi semplicemente passare l'ID app e la chiave segreta come parametro access_token:

curl -i -X GET "https://graph.facebook.com/{api-endpoint}&access_token={your-app_id}|{your-app_secret}" 

Scegli se usare un token d'accesso o il metodo appena descritto in base a dove hai nascosto la chiave segreta.

Token d'accesso della Pagina

I token d'accesso della Pagina sono usati nelle chiamate API Graph per gestire le Pagine Facebook. Per generare un token d'accesso della Pagina, un amministratore della pagina deve concedere l'autorizzazione o le autorizzazioni della Pagina necessarie. Una volta concessa, puoi recuperare il token d'accesso della Pagina utilizzando un token d'accesso utente con le autorizzazioni necessarie.

Esempio di codice

curl -i -X GET "https://graph.facebook.com/{your-user-id}/accounts?access_token={user-access-token} 

Restituirà un elenco delle Pagine in cui hai un ruolo e altre informazioni su ogni Pagina, come la categoria della Pagina, le specifiche autorizzazioni di cui disponi per quella Pagina e il token d'accesso della Pagina.

{
  "data": [
    {
      "access_token": "EAACEdE...",
      "category": "Brand",
      "category_list": [
        {
          "id": "1605186416478696",
          "name": "Brand"
        }
      ],
      "name": "Ash Cat Page",
      "id": "1353269864728879",
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT",
        "MANAGE"
      ]
    },
    {
      "access_token": "EAACEdE...",
      "category": "Pet Groomer",
      "category_list": [
        {
          "id": "163003840417682",
          "name": "Pet Groomer"
        },
        {
          "id": "2632",
          "name": "Pet"
        }
      ],
      "name": "Unofficial: Tigger the Cat",
      "id": "1755847768034402",
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT"
      ]
    }
  ]
}

Il token d'accesso di una Pagina ti consente di effettuare chiamate all'API per conto di una Pagina. Ad esempio, puoi pubblicare un aggiornamento di stato su una Pagina (anziché sul diario dell'utente) o leggere i dati di Insights della Pagina.

I token d'accesso sono unici per ogni Pagina, amministratore e app.

Lunghezza del token d'accesso

La lunghezza di tutti i tipi di token d'accesso cambierà nel tempo man mano che Facebook apporta modifiche a ciò che viene memorizzato in essi e al modo in cui sono codificati. Nel tempo, la lunghezza aumenterà e si ridurrà. Utilizza un tipo di dati a lunghezza variabile senza una dimensione massima specifica per memorizzare i token d'accesso.

Scopri di più