Gestione delle autorizzazioni in Facebook Login per il web

Una componente fondamentale nell'avvio della finestra di dialogo Accedi è scegliere a quali dati l'app deve accedere. Negli esempi abbiamo usato il parametro scope, che determina il modo in cui viene richiesto l'accesso ai dati. Si tratta delle autorizzazioni.

Puoi consultare informazioni approfondite sulle autorizzazioni nella relativa guida. Tuttavia, quando usi le autorizzazioni insieme alla finestra di dialogo Accedi ricorda che:

  • Le autorizzazioni vengono richieste quando crei la finestra. Pertanto, quelle concesse sono legate al token d'accesso restituito.
  • Altre piattaforme potrebbero avere autorizzazioni diverse. Ad esempio, su iOS è possibile richiedere i luoghi in cui un utente è stato taggato, mentre nella versione web questa autorizzazione non è necessaria.
  • Puoi aggiungere altre autorizzazioni in seguito, quando avrai bisogno di più funzionalità. Aggiungile semplicemente all'elenco delle autorizzazioni già concesse e avvia di nuovo la finestra di dialogo Accedi, che richiederà le nuove aggiunte.
  • La finestra di dialogo Accedi permette agli utenti di non condividere determinate autorizzazioni con l'app, che deve essere in grado di gestire la situazione. Scopri di più nella nostra finestra di dialogo relativa alle autorizzazioni.
  • Le app che richiedono ulteriori informazioni oltre ai campi predefiniti e all'autorizzazione emaildevono essere sottoposte all'analisi da parte di Facebook prima di renderle disponibili al pubblico generale. Scopri di più consultando la documentazione sull'analisi degli accessi e le nostre linee guida per l'analisi.

Aggiunta di autorizzazioni

Una delle best practice per l'uso di Facebook Login è non richiedere contemporaneamente le autorizzazioni di lettura e di pubblicazione. L'app può richiederne altre in seguito, quando l'utente ha già effettuato l'accesso. Sarà sufficiente avviare la finestra di dialogo Accedi per richiedere una nuova autorizzazione.

Ad esempio, immagina di avere un pulsante Accedi con le seguenti autorizzazioni:

<fb:login-button scope="public_profile" onlogin="checkLoginState();">
</fb:login-button>

Inoltre, se verifichi /me/permissions per le autorizzazioni che l'utente ha accettato di concedere, il risultato sarà simile al seguente:

{"data":
  [
    {
      "permission":"public_profile",
      "status":"granted"
    }
  ]
}

Se desideri aggiungere l'autorizzazione email in un secondo momento, puoi avviarla nuovamente con la funzione FB.login() nel modo seguente:

FB.login(function(response) {
   console.log(response);
}, {scope: 'email'});

(è necessario chiamare la funzione dal gestore degli eventi del pulsante o è probabile che intervenga il blocco pop-up del browser).

Tieni presente che la richiesta riguarda solo la nuova autorizzazione. Se accetti la nuova autorizzazione e verifichi /me/permissions, il risultato sarà simile al seguente:

{"data":
  [
    {
      "permission":"public_profile",
      "status":"granted"
    },
    {
      "permission":"email",
      "status":"granted"
    }
  ]
}

Tieni presente che la nuova autorizzazione email è stata aggiunta alla lista di quelle concesse.

Nuova richiesta delle autorizzazioni negate

Facebook Login consente agli utenti di negare la condivisione di alcune autorizzazioni con la tua app. Se l'utente nega user_likes ("Mi piace") e verifica /me/permissions per le autorizzazioni concesse, il risultato sarà simile al seguente:

{
  "data":
    [
      {
        "permission":"public_profile",
        "status":"granted"
      },
      {
        "permission":"user_likes",
        "status":"declined"
      }
    ]
}

Tieni presente che user_likes non è stata concessa.

Puoi chiedere all'utente di concedere le autorizzazioni negate all'app una sola volta. Mostra prima una schermata in cui spieghi il motivo per cui dovrebbe concedere una determinata autorizzazione. Se, però, usi il metodo descritto nella sezione precedente, la finestra di dialogo Accedi non la richiederà.

Questo poiché, una volta che l'utente ha negato un'autorizzazione, la finestra di dialogo Accedi non la richiede a meno che non sia tu a specificarlo.

Puoi farlo aggiungendo il flag auth_type: rerequest alla chiamata FB.login():

FB.login(
  function(response) {
    console.log(response);
  },
  {
    scope: 'user_likes',
    auth_type: 'rerequest'
  }
);

La finestra di dialogo Accedi chiederà nuovamente l'autorizzazione negata e avrà un aspetto simile a quella descritta nella sezione relativa alla richiesta di nuove autorizzazioni, ma richiederà quelle negate.