Facebook Login per i dispositivi

Se hai bisogno di aiuto per il tuo Facebook Portal, visita il Centro assistenza Portal.

Per immettere il tuo codice Facebook per dispositivi per accedere a smart TV, fotocamera, stampante e altri dispositivi, visita la Pagina Facebook per dispositivi.

Implementa Facebook Login per i dispositivi per consentire agli utenti di accedere alla tua app o ai tuoi servizi con il proprio account Facebook. Questa funzione consente agli utenti di accedere ai dispositivi con sistemi di immissione e schermi limitati, come smart TV, cornici digitali o dispositivi per l'Internet delle cose.

Con Facebook Login i dispositivi mostrano all'utente un codice alfanumerico da inserire in una pagina Web su PC o smartphone. Inoltre, chi usa la tua app o il tuo servizio può concedere le autorizzazioni. Una volta ottenute, il dispositivo riceve il token d'accesso usato dall'app per le richieste all'API Graph che identificano l'utente e restituiscono le informazioni necessarie per personalizzarne l'esperienza.

Se stai creando un'app per Apple TV, Android TV o Fire TV, devi usare l'SDK di Facebook per tvOS o l'SDK di Facebook per Android.

Questa guida descrive l'integrazione manuale di Accesso ai dispositivi senza usare questi SDK.

Esperienza utente

Queste linee guida descrivono come progettare un accesso chiaro, sicuro e coerente per dispositivi e servizi.

1. Call to action

Per prima cosa, pensa a quando desideri chiedere agli utenti di effettuare l'accesso o di connettersi con Facebook. Per alcuni dispositivi potrebbe essere immediatamente, per altri più tardi.

Per assicurare un'esperienza utente funzionale, affidabile e soddisfacente, crea un pulsante il più possibile simile a quello ufficiale di Facebook Login.

Dal punto di vista visivo:

  1. Inserisci le etichette "Accedi con Facebook" o "Connettiti a Facebook".
  2. Usa il bianco e il blu ufficiale Facebook: #1877F2.
  3. Se il dispositivo supporta un display grafico, puoi anche incorporare il logo "f" ufficiale. Secondo le linee guida per la marca Facebook, il logo deve rimanere sempre bianco o essere colorato con il blu Facebook (#1877F2).

Ove pertinente, descrivi i vantaggi dell'accesso. Ad esempio, "scopri cosa stanno guardando i tuoi amici" o "vedi le foto degli album di Facebook".

2. Visualizzazione del codice

Quando qualcuno clicca sulla call to action, il tuo dispositivo effettua una chiamata all'API di Facebook che restituisce un codice.

Nella tua interfaccia, invita gli utenti a visitare un sito web e a inserire tale codice mostrando loro il messaggio seguente: "Successivamente, visita facebook.com/device (http://facebook.com/device) su computer o smartphone, quindi inserisci questo codice". Mostra l'intero codice ricevuto tramite l'API Device Login di Facebook. Il codice ha una lunghezza compresa tra 6 e 12 caratteri.

Per permettere alle persone di annullare il flusso di accesso ai dispositivi, includi un pulsante Close o Cancel. In questo modo puoi reindirizzarli alla schermata di accesso iniziale.

Quando il codice viene visualizzato sullo schermo, il dispositivo chiede all'API Device Login di controllare se qualcuno ha autorizzato l'app. Dopo qualche minuto, se il codice non è stato inserito, l'API Device Login restituisce l'errore code_expired. Quando il dispositivo riceve l'errore, annulla il flusso di accesso e mostra la call to action nell'interfaccia.

I codici QR possono anche essere generati con il codice utente incorporato nell'URL. Questa operazione può essere effettuata aggiungendo il parametro user_code all'URL:

https://www.facebook.com/device?user_code=<USER_CODE>

3. Autorizzazione

Questo è il flusso visualizzato dagli utenti quando accedono a facebook.com/device su computer o browser mobili. Per prima cosa, visualizzano un campo di testo in cui possono inserire il loro codice:

Dopo aver inserito il codice e cliccato su Continue, possono scegliere quali autorizzazioni concedere:

Gli utenti capiscono che l'accesso è avvenuto correttamente e visualizzano un messaggio di conferma:

4. Conferma che l'accesso è avvenuto correttamente

Nell'interfaccia del dispositivo, dovresti mostrare anche un messaggio di conferma. Questo dovrebbe contenere il nome dell'utente e, se possibile, l'immagine del profilo di Facebook.

Mostra la conferma finché l'utente non clicca sul pulsante Continue. Potrebbe essere necessario inserire il codice tramite un computer che si trova altrove, pertanto concedi agli utenti il tempo necessario per tornare al dispositivo e visualizzare la conferma prima di proseguire.

Dopo aver cliccato su Continue, l'utente potrà visualizzare sul dispositivo schermate personalizzate.

5. Uscita o disconnessione

Gli utenti devono avere la possibilità di uscire dal dispositivo e quest'ultimo non deve memorizzare la loro connessione a Facebook. Per farlo, offri le opzioni Log out from Facebook o Disconnect from Facebook nel menu del dispositivo.

Selezionando queste opzioni il dispositivo eliminerà il token d'accesso memorizzato. Se usi un database o un servizio di archiviazione cloud, rimuovilo anche da lì. Non è necessario effettuare una chiamata API per invalidare il token d'accesso.

Quando l'utente si disconnette, il dispositivo mostrerà la call to action iniziale descritta nel passaggio 1.

Implementazione di Facebook Login per i dispositivi

Facebook Login lavora con i dispositivi che effettuano direttamente le chiamate HTTP su Internet. Di seguito sono riportate le possibili chiamate e risposte API del dispositivo.

1. Abilitazione di Facebook Login per i dispositivi

Accedi alla dashboard dell'app e imposta Prodotto > Facebook Login > Impostazioni > Accesso dai dispositivi su "Sì".

2. Generazione di un codice

Quando l'utente clicca sulla call to action Connect to Facebook o Log in with Facebook, il dispositivo deve eseguire un POST HTTP a:

POST https://graph.facebook.com/v2.6/device/login
       access_token=<YOUR_APP_ID|CLIENT_TOKEN>
       scope=<COMMA_SEPARATED_PERMISSION_NAMES> // e.g. public_profile,user_likes
       redirect_uri=<VALID_OAUTH_REDIRECT_URL>

Il parametro scope è facoltativo e deve contenere un elenco separato da virgole di autorizzazioni di accesso, approvate tramite l'analisi degli accessi.

Il CLIENT_TOKEN è disponibile in Impostazioni dell'app -> Avanzate e deve essere combinato con l'ID app (separato con una barra verticale, |) per formare l'access_token completo.

Il parametro redirect_uri è facoltativo. Quando fornisci un URL, l'utente verrà reindirizzato a esso dopo aver completato l'accesso correttamente. Questo ti consente di far accedere l'utente al sito web della tua app per altre opzioni di gestione dell'account. L'URL deve essere un URL di reindirizzamento OAuth valido come configurato in Impostazioni app -> Avanzate. La risposta viene visualizzata in questo modo:

{
  "code": "92a2b2e351f2b0b3503b2de251132f47",
  "user_code": "A1NWZ9",
  "verification_uri": "https://www.facebook.com/device",
  "expires_in": 420,
  "interval": 5
}

La risposta indica che:

  1. Devi mostrare la stringa "A1NWZ9" sul dispositivo.
  2. Devi invitare l'utente ad accedere a "facebook.com/device", quindi a inserire il codice.
  3. Il codice scade dopo 420 secondi. Annulla il flusso di accesso se, trascorso questo lasso di tempo, non hai ricevuto un token d'accesso.
  4. Ogni 5 secondi, il dispositivo deve chiedere all'API Device Login di controllare se l'autorizzazione è stata concessa.

3. Visualizzazione del codice

Dopo aver mostrato lo user_code, il dispositivo deve invitare le persone a visitare verification_uri tramite PC o smartphone, ad esempio facebook.com/device. Vedi Esperienza utente.

4. Controllo delle autorizzazioni

Il dispositivo deve chiedere all'API Device Login di controllare se l'utente ha concesso le autorizzazioni all'app. Usa l'interval nella risposta alla chiamata descritta nel passaggio 1, che è di 5 secondi. Il dispositivo deve chiedere:

POST https://graph.facebook.com/v2.6/device/login_status
       access_token=<YOUR_APP_ID|CLIENT_TOKEN>
       code=<LONG_CODE_FROM_STEP_1> // e.g. "92a2b2e351f2b0b3503b2de251132f47"

La risposta alla chiamata API dipende dal punto del flusso di autorizzazione in cui l'utente si trova. Riceverai un token d'accesso o un oggetto di errore con un sottocodice specifico da analizzare:

Sottocodice di errore Esempio di risposta Significato

N/A

{"access_token": "ABCD...", "expires_in" : 5183996 }

L'utente ha autorizzato correttamente il dispositivo. Il dispositivo ora può usare il valore access_token per le chiamate API autorizzate.

1349174

{"error":{"message":"This request requires the user to take a pending action","code":31,"error_subcode":1349174,"error_user_title":"Device Login Authorization Pending","error_user_msg":"User has not yet authorized your application. Continue polling."}}

L'utente non ha ancora autorizzato l'app. Continua a inviare le richieste con l'intervallo specificato nella risposta del passaggio 1.

1349172

{"error":{"message":"User request limit reached","code":17,"error_subcode":1349172,"error_user_title":"OAuth Device Excessive Polling","error_user_msg":"Your device is polling too frequently. Space your requests with a minium interval of 5 seconds."}}

Il dispositivo invia richieste troppo frequenti. Usa l'intervallo specificato nella prima chiamata API.

1349152

{"error":{"message":"The session has expired""code":463,"error_subcode":1349152, "error_user_title":"Activation Code Expired","error_user_msg":"The code you entered has expired. Please go back to your device for a new code and try again."}}

Il codice del dispositivo è scaduto. Annulla il flusso di accesso e reindirizza l'utente alla schermata iniziale.

5. Conferma che l'accesso è avvenuto correttamente

Se ricevi un token d'accesso significa che l'utente ha autorizzato correttamente l'app. Continua a usarlo sul dispositivo.

Mostra il nome dell'utente e, se disponibile, un'immagine del profilo per confermare che l'accesso è avvenuto correttamente finché l'utente non cliccherà su Continue. Per ottenere il nome e l'immagine del profilo, effettua una chiamata API Graph standard:

GET https://graph.facebook.com/v2.3/me?
      fields=name,picture&amp;
      access_token=<USER_ACCESS_TOKEN>

La risposta verrà visualizzata come segue:

{
  "name": "John Doe", 
  "picture": {
    "data": {
      "is_silhouette": false, 
      "url": "https://fbcdn.akamaihd.net/hmac...ile.jpg"
    }
  }, 
  "id": "2023462875238472"
}

Mostra il nome e l'immagine del profilo finché l'utente non clicca su Continue nel dispositivo.

6. Memorizzazione dei token d'accesso

Usa i token d'accesso per eseguire altre richieste all'API Graph.

I token d'accesso per il dispositivo possono durare fino a 60 giorni, ma essere invalidati per diversi motivi. Ad esempio, quando l'utente modifica la password di Facebook.

Se il token non è più valido, il dispositivo dovrà eliminarlo dalla memoria. Per ottenerne uno nuovo e valido, l'utente deve ripetere il flusso di accesso descritto nel passaggio 1.

Risoluzione dei problemi

Posso effettuare le richieste nel flusso del dispositivo tramite HTTP?
OAuth 2 richiede TLS/HTTPS.

Posso effettuare le richieste nel flusso del dispositivo con il metodo GET?
Tutte richieste effettuate nel flusso del dispositivo devono essere di tipo POST.

Come faccio ad aggiornare il token d'accesso per il dispositivo?
I token d'accesso per i dispositivi possono durare fino a 60 giorni.

Se il token non è più valido, il dispositivo dovrà eliminarlo dalla memoria. Per ottenerne uno nuovo e valido, l'utente deve ripetere il flusso di accesso descritto nel passaggio 1.

Per scoprire di più su come aggiornare i token, consulta Token d'accesso.

Quando eseguo una richiesta POST ricevo l'errore Invalid API method, che succede?
Se, eseguendo una richiesta POST, ricevi questo tipo di errore:

{"error":{"message":"Invalid API method","type":"OAuthException","code":3}}

Potresti dover abilitare Accesso dai dispositivi nella tua app.

Accedi alla dashboard dell'app e imposta Prodotto > Facebook Login > Impostazioni > Accesso dai dispositivi su "Sì".

Il token d'accesso del mio dispositivo non è valido. Cosa posso fare?
Se il tuo token d'accesso non è valido, il dispositivo deve eliminare il token dalla memoria e ottenerne uno nuovo. Per ottenerne uno nuovo e valido, l'utente deve ripetere il flusso di accesso descritto nel passaggio 1.