Como lidar com as permissões recusadas

Quando as pessoas criam contas ou fazem login em seu aplicativo usando o Login no Facebook, elas têm a oportunidade de conceder as permissões que você solicita. Mas elas também têm a oportunidade de recusar todas as permissões, com exceção de seus perfis públicos. Elas podem fazer isso caso não se sintam bem em compartilhar essas informações com seu aplicativo, ou se não entenderem como essas informações serão usadas para aprimorar a própria experiência.

Quando as pessoas optam por recusar as permissões, é importante que seu aplicativo respeite a escolha delas e ainda proporcione uma excelente experiência.

De modo geral, seu aplicativo pode reagir de uma dentre três maneiras:

  1. Continuar sem as informações
  2. Explicar por que as informações são necessárias e solicitá-las novamente
  3. Coletar as informações por conta própria

Continuar sem as informações

Em alguns casos, talvez uma determinada permissão solicitada não seja obrigatória para o funcionamento de seu aplicativo. Nesse caso, a opção mais simples é respeitar a recusa da permissão e continuar com a introdução ao aplicativo.

No exemplo abaixo, o Flick Finder pode fornecer recomendações de filmes mais precisas se tiver acesso à permissão user_likes. Porém, como a pessoa recusou essa permissão, o Flick Finder apenas apresenta recomendações mais genéricas.

Essa é a opção mais simples, e fornece uma experiência respeitosa às pessoas que optam por recusar determinadas permissões.

Explicar por que e pedir novamente

As pessoas podem recusar uma permissão por não entenderem o motivo de seu aplicativo precisar dessas informações. Nesse caso, seu aplicativo pode exibir um diálogo explicando a necessidade dessas informações e como elas serão usadas para aprimorar a experiência.

No exemplo abaixo, o Flick Finder exibe um diálogo explicando que com um endereço de email o aplicativo pode enviar atualizações quando novos filmes ficarem disponíveis. O botão “Adicionar email” leva a pessoa de volta ao fluxo de Login no Facebook onde pode conceder a permissão email.

Observe que, neste exemplo, a pessoa ainda tem a oportunidade de não conceder a permissão email.

Essa estratégia pode ser usada para uma permissão fundamental ou altamente desejável para a funcionalidade do aplicativo.

Coletar as informações por conta própria

Algumas informações podem ser simples o suficiente para você mesmo coletá-las.

Neste exemplo, o Flick Finder deseja coletar o aniversário de uma pessoa para que possa recomendar filmes apropriados à faixa etária. Se uma pessoa recusar o compartilhamento do aniversário durante o login com o Facebook, o Flick Finder ainda poderá criar um local para coletar as informações dentro do aplicativo, separado do fluxo de Login no Facebook. Recomendamos esse procedimento após a pessoa ter se familiarizado um pouco com seu aplicativo, assim ela entenderá melhor como a permissão proporcionará uma experiência melhor.

Entre os exemplos de informações que podem ser coletadas dessa forma estão user_hometown, user_location, user_birthday ou até mesmo email.

Como detectar permissões recusadas

Quando as pessoas recusam permissões como parte de um fluxo de Login no Facebook, facilitamos a detecção e reação por parte de seu aplicativo usando uma das estratégias descritas acima.

SDK para Android

No Android, você pode chamar o método getDeclinedPermissions no objeto AccessToken no SDK do Facebook para Android.

SDK para iOS

No iOS, você pode chamar o método [FBSDKAccessToken declinedPermissions] no SDK do Facebook para iOS.

SDK para JavaScript

Para detectar as permissões recusadas, você pode chamar a borda permissions no objeto User da API de Gráfico. Você pode coletar quaisquer permissões recusadas iterando por meio da resposta:

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

Para detectar as permissões recusadas, você pode chamar a borda permissions no objeto User da API de Gráfico:

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

que produz uma resposta com o formato:

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

Isso informa ao seu aplicativo que a pessoa concedeu as permissões user_birthday e public_profile, mas optou por recusar a permissão email.

Resumo

Lidar de forma elegante com as permissões recusadas é uma parte importante do fornecimento de uma ótima experiência de Login no Facebook às pessoas.

A implementação de uma das estratégias acima garantirá que as pessoas que baixam e instalam seu aplicativo possam fazer login sem enfrentar uma experiência perturbadora e frustrante, o que afeta a reputação de seu aplicativo e a classificação na loja de aplicativos.