Gestione delle autorizzazioni negate

Quando crea un account o effettua l'accesso alla tua app tramite Facebook Login, l'utente può decidere di concedere le autorizzazioni che hai richiesto o di negarle, a eccezione di quelle relative al profilo pubblico. Questo accade quando non si sente a suo agio nel condividere con la tua app queste informazioni o quando non capisce come saranno usate per migliorarne l'esperienza.

È importante che la tua app rispetti la decisione dell'utente di negare le autorizzazioni pur offrendo la miglior esperienza possibile.

In generale, la tua app può gestire la situazione in tre modi:

  1. Proseguire senza le informazioni richieste
  2. Spiegare perché le informazioni sono necessarie e richiederle nuovamente
  3. Raccogliere le informazioni in autonomia

Continua senza informazioni

Se un'autorizzazione non è necessaria per il corretto funzionamento dell'app, la cosa più semplice da fare è rispettare la decisione dell'utente di negarla offrendo l'accesso all'app.

Nell'esempio qui sotto, Flick Finder sarebbe in grado di offrire consigli migliori sui film avendo accesso all'autorizzazione user_likes, ma essendo stata negata dall'utente saranno mostrati consigli più generici.

Si tratta dell'opzione più semplice, che offre un'esperienza nel rispetto delle scelte di chi non intende concedere determinate autorizzazioni.

Spiega perché le informazioni sono necessarie e richiedile nuovamente

È possibile che l'utente neghi un'autorizzazione poiché non capisce la necessità della tua app di usarla. In questo caso, puoi mostrare una finestra che spiega perché hai bisogno di queste informazioni e come saranno usate per migliorarne l'esperienza.

Nell'esempio qui sotto, Flick Finder mostra una finestra che spiega come, attraverso l'indirizzo e-mail, l'app può inviare all'utente aggiornamenti sulla disponibilità di nuovi film. Con il pulsante "Add Email" (Aggiungi e-mail) si torna al flusso Facebook Login in cui è possibile concedere l'autorizzazione email.

In questo esempio, l'utente ha comunque la possibilità di negare l'autorizzazione email.

Questa strategia può essere usata per le autorizzazioni necessarie o particolarmente utili al corretto funzionamento della tua app.

Raccogli le informazioni in autonomia

Le informazioni più semplici possono essere raccolte in autonomia.

In questo esempio, Flick Finder desidera conoscere il compleanno dell'utente per consigliare film adatti all'età. Se la condivisione del compleanno è stata negata all'accesso con Facebook, Flick Finder potrà comunque creare un'area in cui raccogliere queste informazioni all'interno dell'app, indipendentemente dal flusso Facebook Login. Consigliamo di usare questa opzione quando l'utente avrà avuto modo di familiarizzare con l'app, così da capire come l'autorizzazione può migliorarne l'esperienza.

Alcune delle informazioni che è possibile raccogliere in questo modo sono user_hometown, user_location, user_birthday o email.

Individua le autorizzazioni negate

Quando le autorizzazioni vengono negate durante il flusso Facebook Login, l'app può facilmente individuarle e gestirle tramite una delle strategie descritte in precedenza.

SDK per Android

Su Android, puoi chiamare il metodo getDeclinedPermissions dell'oggetto AccessToken nell'SDK di Facebook per Android.

SDK per iOS

Su iOS, puoi chiamare il metodo [FBSDKAccessToken declinedPermissions] nell'SDK di Facebook per iOS.

SDK JavaScript

Per individuare le autorizzazioni negate, puoi chiamare il segmento permissions nell'oggetto User dell'API Graph. Raccoglile iterando la risposta:

FB.api('/me/permissions', function(response) {
  var declined = [];
  for (i = 0; i < response.data.length; i++) { 
    if (response.data[i].status == 'declined') {
      declined.push(response.data[i].permission)
    }
  }
  alert(declined.toString())
});

API

Per individuare le autorizzazioni negate, puoi chiamare il segmento permissions nell'oggetto User dell'API Graph:

GET https://graph.facebook.com/me/permissions?access_token=USER_ACCESS_TOKEN

In questo modo otterrai una risposta simile alla seguente:

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

Questo risultato comunicherà all'app che le autorizzazioni user_birthday e public_profile sono state concesse ma che email è stata negata.

Riepilogo

Saper gestire le autorizzazioni negate è importante per offrire la miglior esperienza possibile con Facebook Login.

Implementando una delle strategie indicate puoi assicurarti che chi scarica e installa la tua app sarà in grado di effettuare l'accesso senza imbattersi in un'esperienza discontinua o frustrante, con un impatto negativo sulla reputazione e sul punteggio della tua app negli store.