Solicitar e revogar permissões

Dependendo da sua plataforma e de como você escolhe integrar o Login do Facebook, há um método de solicitação de permissões específico para cada tipo de fluxo de login:

Web

Apps para celular

  • O login no Android pode usar várias classes diferentes para solicitar e gerenciar permissões. Consulte o nosso tutorial de login para Android para saber mais.
  • O login no iOS pode usar vários métodos diferentes para solicitar permissões. Consulte o nosso tutorial de login para iOS para saber mais.
  • O Windows Phone usa o parâmetro scope ao iniciar a associação de URI.

Muitas das APIs listadas acima também podem ser usadas para solicitar outras permissões durante o ciclo de vida de um app, e não apenas no login inicial.

Otimizar solicitações de permissão

Como regra geral, quanto mais permissões você solicitar, menor será a probabilidade de que as pessoas usem o Facebook para entrar no seu app. Na verdade, nossas pesquisas mostram que solicitar mais do que quatro permissões resulta em uma queda significativa do número de logins concluídos no app.

Orientações

Veja algumas diretrizes que você precisa seguir ao solicitar permissões durante e após o login:

  • Solicite apenas as permissões essenciais a um app.

  • Solicite uma permissão no contexto em que ela é necessária. Por exemplo, se o app quiser mostrar locais de interesse próximos à casa de uma pessoa e solicitar user_location imediatamente antes de mostrar essa informação, o usuário entenderá melhor o motivo da solicitação da permissão.

  • Separe as solicitações de permissão de leitura e de publicação. Para saber mais, consulte a seção abaixo.

  • Nunca solicite permissões para atender a uma necessidade futura. Isso causará desconfiança e poderá levar as pessoas a rejeitar o seu app.

  • Esclareça com antecedência o motivo de solicitar uma permissão. Se você explicar por que precisa ter acesso a algo, isso poderá aumentar a disposição das pessoas para compartilhar informações.


Publicar permissões

Os apps devem separar a solicitação de permissões de leitura e de publicação. Configure o app para solicitar as permissões de leitura essenciais no login inicial. Depois, solicite as permissões de publicação necessárias quando uma pessoa realmente precisar delas, por exemplo, quando alguém quiser criar uma publicação de Open Graph no app. Isso proporciona uma melhor experiência do usuário e otimiza a conversão.

Você receberá alertas do desenvolvedor quando o app solicitar permissões sucessivas de leitura e de publicação. Para deixar de receber esses alertas, separe as solicitações ou siga as instruções abaixo para casos excepcionais.

Caso o app exija permissões de publicação com antecedência (por exemplo, um app com o objetivo único de publicar o estado de humor de uma pessoa no Facebook), solicite apenas as permissões de leitura essenciais no login inicial. Depois que a pessoa entrar, mostre uma tela explicando por que o app precisa de permissões de publicação e permita que ela aceite a solicitação clicando em um botão. Essa prática oferece mais contexto aos usuários e melhora a sua conversão.

Por exemplo, talvez você precise solicitar permissões sucessivas de leitura e de gravação na primeira vez em que associar uma conta baseada em email à conta do Facebook de alguém. Normalmente, isso é feito quando uma pessoa quer compartilhar uma publicação na linha do tempo do Facebook. Quando o app gera o diálogo Entrar, a pessoa vê dois diálogos consecutivos: um para conectar a conta dela ao app e outro para solicitar permissões de publicação. Nesse caso, verifique se a única permissão de leitura solicitada é public_profile. Dessa forma, você oferece uma melhor experiência ao usuário, já que ele quer publicar usando o seu app e, muitas vezes, não tem interesse em fornecer permissões de leitura adicionais. Isso também melhora a sua conversão.

Verificar permissões atuais

O Facebook oferece às pessoas controle total sobre as permissões que concedem a um app. Esse controle vai além do momento em que elas veem o diálogo Entrar. As pessoas podem optar por não conceder determinadas permissões durante o processo de login. Elas também podem revogar permissões nas configurações de privacidade do Facebook a qualquer momento. Os apps devem verificar a validade das permissões antes de tentar realizar uma chamada de API em que elas são necessárias. Por exemplo, é preciso conferir se a permissão email concedida ainda é válida antes de enviar uma mensagem.

Para apps da web, fornecemos um ponto de extremidade da Graph API que exibe uma lista de permissões concedidas:

GET /{user-id}/permissions

É preciso fazer a chamada com um token de acesso do usuário ou do app. A chamada retornará uma string JSON contendo os nomes e os status das permissões que foram concedidas ao app:

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

Também fornecemos métodos nos SDKs para iOS e Android que oferecem representações adequadas a plataformas das permissões concedidas ao seu app.

Gerenciar permissões ausentes

Quando um app solicita permissões, as pessoas podem negá-las por completo, concedê-las em parte ou alterá-las mais tarde. Para fornecer uma ótima experiência, devem ser desenvolvidos apps para lidar com essas situações.

Em primeiro lugar, os apps precisam ter capacidade para lidar com permissões que foram solicitadas, mas não concedidas:

  • Verifique as permissões concedidas antes de usar APIs que precisam delas.
  • Detecte os erros retornados quando uma solicitação de API é feita sem a permissão correta. Veja este exemplo de erro:
{
  "error": {
    "message": "(#200) The user hasn't authorized the application
     to perform this action",
    "type": "OAuthException",
    "code": 200
  }
}

Se um app detectar que o usuário negou algumas ou todas as permissões, será possível retorná-lo uma vez ao fluxo de login para solicitar as permissões necessárias. No entanto, essa é uma experiência ruim e deve ser evitada sempre que possível. Se um usuário fizer a escolha explícita de não conceder uma permissão específica a um app, provavelmente não mudará de ideia, mesmo que receba solicitações contínuas. Em vez disso, faça o seguinte:

  • Caso um usuário recuse o diálogo Entrar, exiba uma explicação clara e direta sobre por que você está solicitando cada permissão. Depois, permita que ele clique ou toque para reativar o diálogo de solicitação de permissão. Não o redirecione imediatamente para um diálogo de solicitação de permissão sem exibir uma explicação.

  • Se alguém recusar uma permissão, o diálogo Entrar não permitirá que o app a solicite novamente, a menos que você transmita auth_type=rerequest junto com a solicitação.

  • Quando o usuário conceder algumas permissões, mas não outras, solicite as permissões ausentes apenas quando elas forem necessárias. Por exemplo, caso o app envie confirmações de pedidos para o email do usuário, solicite email apenas quando ele fizer o pedido.

  • A menos que as permissões solicitadas no diálogo Entrar sejam essenciais para a funcionalidade do seu app e um recurso apresente falhas sem elas, permita que as pessoas continuem usando o app sem as permissões.

Você receberá alertas do desenvolvedor se o app direcionar repetidamente os usuários para os diálogos de permissões após eles negarem o seu pedido. Para cancelar o envio dos alertas, siga estas diretrizes.

Revogar permissões

Os apps podem permitir que as pessoas revoguem permissões que foram concedidas anteriormente. Por exemplo, o app pode ter uma página de configurações para que o usuário desative o envio de mensagens por email. Essa página de configurações também pode revogar a permissão email ao mesmo tempo.

Para revogar uma permissão específica, faça uma chamada a um ponto de extremidade da Graph API:

DELETE /{user-id}/permissions/{permission-name}

Essa solicitação deve ser feita para o app atual usando um token de acesso do usuário ou do app. Se a solicitação for bem-sucedida, você receberá a resposta true.


Revogar o login

Também é possível permitir que as pessoas desautorizem completamente um app ou revoguem o login fazendo uma chamada para o seguinte ponto de extremidade da Graph API:

DELETE /{user-id}/permissions

Essa solicitação deve ser feita para o app atual usando um token de acesso válido do usuário ou do app. Caso a solicitação seja bem-sucedida, o app receberá a resposta true. Se a chamada for bem-sucedida, o token de acesso do usuário será invalidado, e a pessoa precisará entrar novamente. Como você está desautorizando o app, o usuário também precisará conceder acesso como se estivesse entrando pela primeira vez.

Guias de plataforma

AndroidiOSWeb