Facebook App: Requisitando permissões pela API do PHP

Introdução

Este artigo esta atualizado e testado de acordo com a versão mais recente da Graph API. Esta também baseado na versão 4.0.x 5 do SDK para PHP.

Neste artigo vamos aprender como solicitar permissões para o usuário através de Aplicativo para Facebook. Os exemplos deste artigo são baseados na versão 4.0.x 5 do SDK para PHP. Caso esteja iniciando e gostaria de saber como criar aplicativos para facebook, sugiro ler primeiro meu outro artigo Criando Aplicativos Facebook SDK v5 em PHP

Solicitar permissões é um processo necessário quando se precisa de alguma informação adicional que não esta presente no perfil público do usuário ou quando necessário realizar operações em nome do usuário, entre outros.

Exemplo de algumas permissões possíveis:

PermissãoDescrição
emailPermite acesso ao endereço de e-mail primário do usuário.
publish_actionsConcede acesso a publicar posts entre outras ações em nome do usuário.
manage_pagesPermite o aplicativo obter tokens de Páginas que o usuário administra.
publish_pagesConcede permissão para publicar, gerar comentários e likes em páginas que o usuário administra.
user_birthdayPermite acessar o dia e mês de aniversário do usuário.
user_likesPermite acesso a lista de todas páginas e objetos que o usuário curtiu.

Um referência completa de permissões do facebook pode ser obtida no link https://developers.facebook.com/docs/facebook-login/permissions/v2.4#reference

Solicitando Permissões

Solicitar permissões na Plataforma do Facebook é possível através do componente de Login. Basta informarmos quais permissões desejamos solicitar através de um array informado como segundo parâmetro para o componente de Login. Veja exemplo abaixo onde solicitamos a permissão email e a user_birthday.

$helper = $fb->getRedirectLoginHelper();

// array com as permissoes a serem solicitadas
$perms = [ 'email', 'user_birthday' ];
// url que o usuario sera redirecionado pelo facebook apos 
// efetuado o login e perms.
$redirect_url = 'http://www.example.com';

$loginUrl = $helper->getLoginUrl($redirect_url, $perms);

echo '<a href="'.$loginUrl.'">Login with Facebook</a>';

Veja que na tela de ingressão no aplicativo, além do perfil público o aplicativo solicita permissão para acessar o e-mail e a data de aniversário do usuário:

fb-perms

Você pode solicitar permissões a qualquer momento em seu aplicativo, não necessariamente no momento inicial que o usuário acessa o aplicativo. Por exemplo, você pode querer solicitar a publish_actions somente quando for necessário publicar algo no mural do usuário por exemplo.

Permissões Extendidas

Permissões extendidas dão acesso a informações mais sensíveis do usuário para o aplicativo, como por exemplo, publicar e deletar dados. Todas permissões extendidas aparecem um uma janela separada, onde o usuário pode decidir se quer aceitá-la ou não.

Exemplos de algumas permissões extendidas: publish_actions, publish_pages, manage_pages, read_mailbox. Mais informações sobre permissões extendidas podem ser obtidas em https://developers.facebook.com/docs/facebook-login/permissions/v2.4#reference-extended.

Veja abaixo, quando solicitamos uma permissão extendidas, no caso a publish_actions, ela parece em uma janela a parte, com a opção de pular:

face-perm2

Checando Permissões

A plataforma do facebook permite verificar as permissões que o usuário concedeu para o aplicativo. Por exemplo, é interessante verificar se o usuário possui a permissão publish_actions antes de realizar publicações em seu mural. Lembrando que o usuário pode revogar a permissão ou não aceitá-la. Veja abaixo como podemos obter a lista completa de permissões que o usuário concedeu para o aplicativo. Também colocamos uma verificação referente a permissão publish_actions:

// requisita lista de permissoes para o graph api
$response = $fb->get('/me/permissions', $accessToken);

// trata a resposta em um formato util
$permissions = $response->getDecodedBody();
$permissions_list = [];

foreach($permissions['data'] as $perm) {
	if($perm['status'] == 'granted') {
	    $permissions_list[] = $perm['permission'];
	}
}

if(in_array('publish_actions', $permissions_list)) {
	// usuario tem publish_actions, continuar o app

} else {

	// redirecionar o usuario para aceitar a permissao
	$helper = $fb->getRedirectLoginHelper();

	// url que o usuario sera redirecionado pelo facebook apos 
	// efetuado o login e perms.
	$redirect_url = 'http://www.example.com'; 
	$loginUrl = $helper->getLoginUrl($redirect_url, [ 'publish_actions' ]);

	// redireciona 
	header("Location: $loginUrl");
	exit;
}

Obs: Perceba que é necessário checar a propriedade status == ‘granted’ que realmente garante que a permissão foi concedida.

Submetendo o aplicativo para revisão

É importante destacar que já algum tempo o facebook solicita que você envie o aplicativo para revisão antes que possa publicá-lo em produção onde outros usuários poderão utilizá-lo. É necessário enviar uma série de informações, entre elas o motivo que esta usando cada uma das permissões. As únicas permissões que não precisam de revisão são as permissões consideradas básicas: public_profile, user_friends, email. Para te ajudar nesse processo de revisão, aconselho a usar o link https://developers.facebook.com/docs/apps/review como ponto de partida. Você encontrará várias informações úteis que irão lhe auxiliar no processo.

Comments

  1. By bruno

    Reply

  2. By Lucas William

    Reply

  3. By Jean

    Reply

  4. By Roni

    Reply

  5. By William

    Reply

    • By pasquati

      Reply

      • By William

        Reply

  6. By Alex

    Reply

  7. By Inaldo Eleuterio

    Reply

    • By pasquati

      Reply

      • By Inaldo Eleuterio

        Reply

        • By pasquati

          Reply

  8. By Felipe

    Reply

    • By Douglas V. Pasqua

      Reply

      • By Felipe

        Reply

  9. By MAURICIO

    Reply

    • By Douglas V. Pasqua

      Reply

  10. By Gustavo Passos

    Reply

    • By Douglas V. Pasqua

      Reply

  11. By Cleiton

    Reply

  12. By Caio

    Reply

  13. By Alvaro

    Reply

  14. Reply

    • By Douglas V. Pasqua

      Reply

  15. By Rodolfo

    Reply

    • By Douglas V. Pasqua

      Reply

      • By Rodolfo

        Reply

        • By Douglas V. Pasqua

          Reply

  16. By dfikeda

    Reply

    • By Douglas V. Pasqua

      Reply

      • By dfikeda

        Reply

        • By Douglas V. Pasqua

          Reply

  17. By Aluizio

    Reply

    • By Douglas V. Pasqua

      Reply

  18. Reply

    • By Douglas V. Pasqua

      Reply

  19. Reply

    • By Douglas V. Pasqua

      Reply

  20. By Leandro.

    Reply

    • By Douglas V. Pasqua

      Reply

  21. By Carlos Silva

    Reply

    • By Douglas V. Pasqua

      Reply

  22. By carol

    Reply

  23. By Ricardo Soares

    Reply

    • By Douglas V. Pasqua

      Reply

  24. By Raphael Monteiro

    Reply

  25. By Jorge

    Reply

    • By Douglas V. Pasqua

      Reply

  26. By Jorge

    Reply

  27. By Ricardo

    Reply

    • By Douglas V. Pasqua

      Reply

      • By Ricardo

        Reply

Deixe um comentário

Follow

Get every new post on this blog delivered to your Inbox.

Join other followers: