Token d'accesso

Quando un utente si connette a un'app con Facebook Login, l'app ottiene un token d'accesso che consente un accesso temporaneo e sicuro alle API di Facebook.

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. Puoi usare diversi metodi per ottenere i token d'accesso, che descriveremo in questo documento. 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'accesso Descrizione

Token d'accesso per l'utente

Il token per l'utente è quello più comunemente usato. È 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 per l'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 per l'app con una chiamata tra server.

Token d'accesso per la Pagina

Sono simili a quelli per l'utente, ma concedono le autorizzazioni alle API che leggono, scrivono o modificano i dati relativi a una Pagina Facebook. Per ottenerne uno, devi prima ottenere un token d'accesso per l'utente e richiedere l'autorizzazione manage_pages. Una volta ottenuto, potrai richiedere il token d'accesso per la Pagina attraverso l'API Graph.

Token client

Il token client è un identificatore che puoi incorporare nei binari nativi mobili o nelle app per computer e serve per identificare la tua app. Non si tratta di un identificatore 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.

Generazione dei token d'accesso

- Token d'accesso per l'utente

- Token d'accesso per l'app

- Token d'accesso per la Pagina


Token d'accesso per l'utente

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

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:

Javascript

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

Android

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

iOS

L'SDK di Facebook per iOS gestisce automaticamente i token d'accesso per l'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.

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.

Esempi di codice

Android

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

iOS

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

JavaScript (Web)

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

Token di breve e lunga durata

I token d'accesso per l'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.

Token d'accesso per l'app

I token d'accesso per l'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 Insights dell'app.

Limitazioni

Alcuni dati dell'utente visibili quando la richiesta viene eseguita con un token d'accesso per l'utente non sono sempre disponibili nel caso dei token d'accesso per l'app. Se consulti questi dati per sfruttarli nella tua app, usa un token d'accesso per l'utente invece di uno per l'app.

Se nelle impostazioni Avanzate della Dashboard gestione app l'app è impostata su Native/Desktop, i token d'accesso per l'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 per l'app generato tramite quella chiave non è sicuro).

Generazione di un token d'accesso per l'app

Effettua una chiamata API Graph per generare un token d'accesso per l'app:

GET /oauth/access_token
    ?client_id={app-id}
    &client_secret={app-secret}
    &grant_type=client_credentials

La chiamata restituisce un token d'accesso per l'app che puoi usare al posto di quello per l'utente nelle chiamate API, come descritto sopra. Per motivi di sicurezza, il token d'accesso per l'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 per l'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 per l'app. Passa l'ID app e la chiave segreta come parametro access_token:

https://graph.facebook.com/endpoint?key=value&access_token=app_id|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 per la Pagina

I token d'accesso per la Pagina sono usati nelle chiamate API Graph per gestire le Pagine Facebook. Per generarli, un amministratore della Pagina deve concedere un'autorizzazione estesa denominata manage_pages. Una volta ottenuta l'autorizzazione, puoi recuperare il token d'accesso della Pagina usando un token d'accesso dell'utente con le autorizzazioni necessarie e la seguente richiesta all'API Graph:

GET /me/accounts HTTP/1.1
Host: graph.facebook.com

Restituirà un elenco delle Pagine amministrate dall'utente e altre informazioni (come la categoria della Pagina e le autorizzazioni dell'amministratore) e il token d'accesso per la Pagina:

{
  "data": [
    {
      "category": "Product/service",
      "name": "Sample Page",
      "access_token": "{access-token}",
      "id": "1234567890",
      "perms": [
        "ADMINISTER",
        "EDIT_PROFILE",
        "CREATE_CONTENT",
        "MODERATE_CONTENT",
        "CREATE_ADS",
        "BASIC_ADMIN"
      ]
    }, 
}

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 per le Pagine.

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

Gli amministratori della Pagina hanno diversi ruoli, che sono indicati nell'array perms restituito, come descritto sopra. Le funzionalità che hanno a disposizione sono determinate dai valori di perms, descritti in Token e ruoli.