Token d'accesso: Debug e gestione degli errori

Ottenere informazioni su token e debug

Quando si lavora con un token d'accesso, potrebbe essere necessario controllare quali informazioni sono associate ad esso, come l'utente o la scadenza. Per ottenere queste informazioni è possibile utilizzare lo strumento di debug o l'endpoint API.

Per utilizzare l'API, puoi inviare una richiesta API Graph:

curl -i -X GET "https://graph.facebook.com/debug_token?
  input_token={input-token}&
  access_token={valid-access-token}

Sostituisci {input-token} con il token d'accesso di cui desideri ottenere le informazioni e {access-token} con un token d'accesso valido. I token devono provenire dalla stessa app.

La risposta della chiamata API è un array JSON che assomiglia a questo:

{ "data":{ "app_id":"{app-id}", "type":"USER", "application":"{app-name}", "data_access_expires_at":1576687825, "expires_at":1570820400, "is_valid":true, "scopes":[ "pages_show_list", "public_profile" ], "granular_scopes":[ { "scope":"pages_show_list", "target_ids":[ "{page-1-app-can-access-id}", "{page-2-app-can-access-id}" ] } ], "user_id":"10215241773831025" } } 

Per i token d'accesso di lunga durata, viene restituito anche il campo issued_at.

Gestione degli errori

Facebook non ti avviserà se un token d'accesso non è più valido. A meno che tu non abbia inviato all'app la scadenza (expiry) insieme al token d'accesso, l'app potrebbe rilevare che un determinato token non è più valido quando tenti di effettuare una richiesta all'API.

A causa di eventi relativi alla sicurezza, i token d'accesso potrebbero non essere più validi prima della scadenza prevista.

Nella maggior parte delle app, il modo migliore per gestire i token scaduti è acquisire i messaggi di errore generati dall'API. In ogni caso, l'API restituirà un messaggio di errore, un codice e un sottocodice in un corpo JSON in cui è riportata la natura dell'errore. Per ulteriori informazioni su codici e sottocodici, consulta il documento di riferimento ai codici di errore.

Token d'accesso scaduti o non validi

Risposta di esempio per token scaduto

{
  "error": {
    "message": "Error validating access token: Session has expired on Wednesday, 14-Feb-18 18:00:00 PST. The current time is Thursday, 15-Feb-18 13:46:35 PST.",
    "type": "OAuthException",
    "code": 190,
    "error_subcode": 463,
    "fbtrace_id": "H2il2t5bn4e"
  }
}

Risposta di esempio per token non valido

Questa risposta viene inviata quando un utente si disconnette dall'app o cambia la password.

{
  "error": {
    "message": "Error validating access token: The session is invalid 
                because the user logged out.", 
    "type": "OAuthException", 
    "code": 190,
    "error_subcode": 460,
    "fbtrace_id": "H2il2t5bn4e"
  }
}

L'utente dovrà accedere nuovamente per ottenere un token d'accesso valido in modo da poter effettuare chiamate API per suo conto. Il flusso di accesso utilizzato dall'app per i nuovi personi dovrebbe determinare quale metodo devi adottare.

Risposta di esempio errore di autorizzazione app

Quando qualcuno revoca l'autorizzazione o non ha mai autorizzato l'app, la risposta di errore sarà la stessa generata per un nuovo utente.

Risposta di esempio per token non più autorizzato

{
  "error": {
    "message": "Error validating access token: User {user-id} has 
                not authorized application {your-app-id}.", 
    "type": "OAuthException", 
    "code": 190,
    "error_subcode": 458,
    "fbtrace_id": "H2il2t5bn4e"
  }
}
}

Gestione degli errori dei token nelle app iOS

Gli errori API nell'SDK iOS sono in genere visualizzati attraverso istanze NSError passate ai callback. Per maggiori informazioni, consulta la documentazione sugli errori dell'SDK iOS.

Gestione degli errori dei token nelle app Android

Gli errori API in Android SDK sono in genere visualizzati attraverso l'oggetto Response passato al callback Requests. In particolare, puoi chiamare response.getError() per recuperare un'istanza FacebookRequestError.

Scopri di più

Maggiori informazioni sugli errori sono disponibili nel nostro Riferimento agli errori API, ma questi tre errori sono i più comuni relativi ai token d'accesso.