Como gerenciar permissões para Android

Durante o login básico, o seu app recebe acesso ao perfil público e ao email da pessoa. Para você acessar informações adicionais do perfil ou publicar conteúdo no Facebook em nome de uma pessoa, é preciso solicitar as permissões necessárias:

  • Campos de perfil público padrão: fornece acesso às informações básicas do perfil.

  • Permissões de leitura: todas as outras informações que uma pessoa adiciona ao próprio perfil do Facebook são protegidas por outras permissões de leitura.

  • Permissões de gravação: para publicar conteúdo em nome de uma pessoa, os apps precisam de uma permissão de publicação separada.

Veja as maneiras de gerenciar permissões no seu app:

  • Quando o seu app envia solicitações do Facebook, ele precisa verificar as permissões necessárias e solicitá-las, se necessário.

  • É preciso que o app gerencie erros de permissões ausentes no Facebook solicitando permissões e fazendo novas tentativas.

  • As pessoas que usam o app podem revogar permissões no Facebook, mas você também pode implementar esse recurso no app.

  • Para permitir que as pessoas removam privilégios básicos de login do app, basta implementar um mecanismo para revogar o login completamente.

Para saber mais sobre as diferentes permissões disponíveis, consulte o Guia de permissões.

As pessoas são cautelosas quanto às permissões de publicação. Por isso, solicite essas permissões somente quando a pessoa estiver pronta para publicar algo do seu app, e não no login inicial.

Obter permissões adicionais

Durante o login básico, seu app recebe acesso ao perfil público e ao email de uma pessoa. Para acessar mais informações de perfil ou publicar conteúdo no Facebook em nome de alguém, você precisa solicitar as permissões necessárias.

Aqui obtemos o user_status. É possível passar essas permissões para o botão LoginButton ou uma interface do usuário personalizada de login e permissões.

Na classe MainFragment, modifique o código em onCreateView():

...
LoginButton authButton = (LoginButton)view.findViewById(R.id.authButton);
authButton.setFragment(this);
authButton.setReadPermissions(Arrays.asList("user_status"));

return view;
...

Obter permissões de leitura

LoginManager é uma instância singleton e funciona com o currentAccessToken do AccessToken. Depois de um login bem-sucedido, o currentAccessToken será definido. Para você solicitar permissões adicionais, faça uma chamada para os métodos logInWithPermissionName.

Os métodos logInWithPermissionName sempre abrem uma interface do usuário e, se necessário, solicitam permissões adicionais. Para você solicitar permissões adicionais a uma pessoa, faça a seguinte solicitação por meio do SDK do Facebook para Android:

LoginManager.getInstance().logInWithReadPermissions(
    fragmentOrActivity,
    Arrays.asList("email"));

Use esse recurso para solicitar permissões além daquelas que o app já recebeu. É possível usar esse recurso depois do login inicial.

Você pode solicitar diversas das permissões de leitura listadas na referência de permissões.

Obter permissões de publicação

Você pode solicitar quantas permissões de leitura ou de publicação desejar durante o login. A solicitação de mais de quatro permissões leva a um declínio significativo no número de logins concluídos.

A permissão pubish_actions foi removida em 24 de abril de 2018. Para ver mais informações, consulte Alterações fora de ciclo. Para você oferecer aos usuários do app um modo de compartilhar conteúdo no Facebook, use nossos produtos de compartilhamento.

A solicitação de permissões de publicação com publish_actions durante o login cria uma segunda etapa na interface do usuário de login. Sendo assim, você deve solicitar o mínimo de permissões de leitura durante o login, depois solicitar permissões adicionais ou de publicação quando alguém realmente precisar delas. Caso você queira otimizar as solicitações de permissão, consulte como otimizar permissões.

Para solicitar permissões de publicação no seu app, você pode usar o LoginManager.

LoginManager.getInstance().logInWithPublishPermissions(
    fragmentOrActivity,
    Arrays.asList("publish_actions"));

Assim, é possível solicitar permissões além das que o app já recebeu durante o login.

Solicitar permissões novamente

As pessoas podem conceder apenas um subconjunto das permissões solicitadas (com exceção de public profile, que é concedida no login).

Caso você queira obter a lista de permissões associadas ao token de acesso atual, faça uma chamada para:

AccessToken.getCurrentAccessToken().getPermissions();

Para obter a lista de permissões recusadas, faça uma chamada para:

AccessToken.getCurrentAccessToken().getDeclinedPermissions();

O app deve gerenciar o caso de uma pessoa se recusar a conceder uma das permissões solicitadas. Caso o app precise de uma das permissões recusadas para funcionar, você poderá solicitá-la de novo por meio do LoginManager, como nos exemplos acima.

Análise de Login

Quando você implementa o Login no Facebook, seu app pode opcionalmente solicitar permissões para um subconjunto dos dados de quem está fazendo o login.

Se o app solicitar mais que os campos de perfil público e email, ele precisará ser analisado pelo Facebook antes do lançamento. Saiba mais sobre o processo de análise e o que é necessário para passar na análise.

Guia de Análise de Login