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.

Please follow and like us:

Comments

  1. By bruno

  2. By Lucas William

  3. By Jean

  4. By Roni

  5. By William

    • mm By pasquati

      • By William

  6. By Alex

  7. By Inaldo Eleuterio

    • mm By pasquati

      • By Inaldo Eleuterio

        • mm By pasquati

  8. By Felipe

    • mm By Douglas V. Pasqua

      • By Felipe

  9. By MAURICIO

    • mm By Douglas V. Pasqua

  10. By Gustavo Passos

    • mm By Douglas V. Pasqua

  11. By Cleiton

  12. By Caio

  13. By Alvaro

    • mm By Douglas V. Pasqua

  14. By Rodolfo

    • mm By Douglas V. Pasqua

      • By Rodolfo

        • mm By Douglas V. Pasqua

  15. By dfikeda

    • mm By Douglas V. Pasqua

      • By dfikeda

        • mm By Douglas V. Pasqua

  16. By Aluizio

    • mm By Douglas V. Pasqua

    • mm By Douglas V. Pasqua

    • mm By Douglas V. Pasqua

  17. By Leandro.

    • mm By Douglas V. Pasqua

  18. By Carlos Silva

    • mm By Douglas V. Pasqua

  19. By carol

  20. By Ricardo Soares

    • mm By Douglas V. Pasqua

  21. By Raphael Monteiro

    • mm By Douglas V. Pasqua

  22. By Jorge

    • mm By Douglas V. Pasqua

  23. By Jorge

  24. By Ricardo

    • mm By Douglas V. Pasqua

      • By Ricardo

  25. By rejcompraevenda

    • mm By Douglas V. Pasqua

  26. By Jessica Reis

    • mm By Douglas V. Pasqua

      • By Jéssica Reis

Follow

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

Join other followers: