Uma das partes mais importantes da inicialização do diálogo Entrar é escolher a quais dados seu aplicativo terá acesso. Todos os exemplos a seguir usam o parâmetro scope
, que é como você solicita acesso aos dados de uma pessoa. Eles são chamados de Permissões.
Você encontra informações mais detalhadas sobre elas no Guia de permissões. No entanto, ao lidar com permissões e com o diálogo Entrar, é preciso ter em mente o seguinte:
email
devem ser revisados pelo Facebook antes de serem disponibilizados para o público geral. Saiba mais na documentação sobre a análise de login e nas diretrizes gerais de análise.Uma das melhores práticas com o Login do Facebook é não solicitar permissões de leitura e de publicação ao mesmo tempo. Para colaborar com essa prática, seu aplicativo pode solicitar outras permissões mais tarde, bem depois de o usuário entrar. Para isso, basta lançar o diálogo Entrar com a nova permissão.
Por exemplo, digamos que você tenha um botão Entrar com as seguintes permissões:
<fb:login-button scope="public_profile" onlogin="checkLoginState();"> </fb:login-button>
Caso tenha marcado /me/permissions
para as permissões concedidas após a aceitação por parte do usuário, você verá o seguinte:
{"data": [ { "permission":"public_profile", "status":"granted" } ] }
Se você quiser adicionar a permissão email
mais tarde, será possível inicializá-la novamente com a função FB.login()
da seguinte maneira:
FB.login(function(response) { console.log(response); }, {scope: 'email'});
(A chamada à função deve ser feita pelo controle de eventos de um botão. Caso contrário, provavelmente ela será impedida por bloqueadores de notificações pop-up do navegador.)
Observe que apenas a nova permissão é solicitada. Se você aceitá-la marcando /me/permissions
, o resultado será este:
{"data": [ { "permission":"public_profile", "status":"granted" }, { "permission":"email", "status":"granted" } ] }
A nova permissão email
foi adicionada à lista de permissões aceitas.
O Login do Facebook permite que as pessoas recusem o compartilhamento de algumas permissões com seu aplicativo. Se alguém recusar user_likes
(Curtidas), marcando /me/permissions
para as permissões concedidas, isso resultará em:
{ "data": [ { "permission":"public_profile", "status":"granted" }, { "permission":"user_likes", "status":"declined" } ] }
Observe que user_likes
foi recusada em vez de concedida.
Não é um problema solicitar uma vez que alguém conceda ao aplicativo permissões que foram recusadas anteriormente. Você deve ter uma tela de instrução na qual a pessoa pode conceder a permissão para você e, em seguida, pedir novamente. Contudo, se você usar o método descrito na sessão anterior, o diálogo Entrar não solicitará essa permissão.
Isso ocorre porque, quando alguém recusa a permissão, a caixa de diálogo Entrar não volta a pedir a essa pessoa, a menos que você diga explicitamente à caixa de diálogo que está pedindo novamente uma permissão recusada.
Você pode fazer isso adicionando a sinalização auth_type: rerequest
à chamada FB.login()
:
FB.login( function(response) { console.log(response); }, { scope: 'user_likes', auth_type: 'rerequest' } );
Com isso, o diálogo Entrar solicitará novamente a permissão recusada. O diálogo será muito parecido com aquele na seção sobre como solicitar novamente permissões, mas será possível fazer outra solicitação de uma permissão recusada.