Facebook App: Requisitando permissões pela API do PHP

Posted on maio 15, 2012. Filed under: Facebook, PHP | Tags:, |

Introdução

Criar aplicações para o facebook, dependendo do seu objetivo, pode requerer que o usuário autorize certas ações que sua aplicação irá executar em nome dele. Existem muitas informações sobre a API do facebook na internet que estão desatualizadas. Portanto, muitas vezes encontramos dificuldades para implementar funções consideradas básicas, como por exemplo, solicitar permissão do usuário para executar determinada ação. Venho por meio desse post exemplificar como requisitar permissões para o usuário.

Requisitando uma simples permissão

Quando sua aplicação precisa realizar uma determinada ação em nome do usuário, primeiramente é necessário que o usuário autorize essa ação. Por exemplo, caso deseje que sua aplicação publique fotos no perfil do usuário ou em algum album dele, você irá precisar que o usuário autorize essa ação para sua aplicação. Neste caso, no facebook, o nome dessa permissão é publish_stream. Uma lista de permissões disponíveis pelo facebook pode ser encontrado no seguinte link.

O exemplo abaixo mostra como fazer sua aplicação solicitar a permissão de publicação de fotos (publish_stream) para o usuário. Este exemplo já assume que você tenha criado uma aplicação no facebook.

<?php
require 'src/facebook.php';

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
  'appId'  => 'xxxxxxxxxxxxxxx',
  'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
));

// permitir upload de fotos
$facebook->setFileUploadSupport(true);

// obtem usuario logado
$user = $facebook->getUser();

if ($user) {
        // usuario esta logado

        /* obtem as permissões atuais que usuário tem em relação a sua aplicação  */
        $permissions = $facebook->api("/me/permissions");

        /* verifica se o usuário já autorizou a publicação de fotos para a sua aplicação */
        if (!array_key_exists('publish_stream', $permissions['data'][0])) {
                /* solicita permissão */
                header( "Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream")) );
                exit;
        }

        echo "Pode publicar as fotos";

} else {
        // usuário não esta logado. Requisitar login do facebook.
        $loginUrl = $facebook->getLoginUrl();
        header("Location: $loginUrl");
        exit;
}

A aplicação irá solicitar essa permissão somente uma única vez. Após, não será necessário mais a aplicação solicitar essa permissão, a não ser que o usuário remova manualmente a permissão no seu perfil. Segue abaixo exemplo da tela de solicitação de permissão:

Requisitando vários permissões ao mesmo tempo

Pode acontecer que sua aplicação realize mais de uma operação no perfil do usuário. Neste caso, dependendo do que precise, será necessário solicitar vários tipos de permissões. Com o exemplo anterior, podemos solicitar somente uma única permissão por vez. Para facilitar o processo você pode incluir em uma mesma chamada a solicitação de todas permissões que necessita. Fazendo uma simples alteração no código conseguimos obter o resultado desejado:

/* verifica se o usuário já autorizou a aplicação para publicação de fotos/acessar os dados de email e os dados sobre você  */
$permissions = $facebook->api("/me/permissions");
if(! (array_key_exists('publish_stream', $permissions['data'][0])
      &&  array_key_exists('user_photos', $permissions['data'][0])
      &&  array_key_exists('user_about_me', $permissions['data'][0])
      &&  array_key_exists('email', $permissions['data'][0])
)) {

    /* solicitar as permissões  */
    header("Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream,user_photos,user_about_me,email")));
    exit;
}

Segue abaixo exemplo da tela de solicitação de várias permissões ao mesmo tempo:

Em breve mais dicas do facebook pela api do PHP 😉

Make a Comment

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

18 Respostas to “Facebook App: Requisitando permissões pela API do PHP”

RSS Feed for Pasqua Tecnologia Comments RSS Feed

Gostei, poderia dizer como faz para publicar no mural do usuário agora rsrsrs.

Ótimo blog, já estou acompanhando. Podia mostrar como acessar as fotos dos amigos?

Abraços.

Uma maneira simples de obter fotos de amigos:
http://graph.facebook.com/id-do-amigo/picture

Para obter a lista de amigos no sdk para php:
$friends = $facebook->api(‘/me/friends’);

Muito bom, como faço agora para publicar uma imagem no perfil do usuario?

Olá Roni,

O post abaixo explica como postar fotos na linha do tempo do usuário:
https://dpasqua.wordpress.com/2012/06/28/manipulando-fotos-no-facebook-com-sdk-para-php/

Boa sorte.

Opa, bom post amigo. Isso funciona na plataforma do Blogger?

Olá William,

O Blogger tem integração com o facebook. Acredito que você pode configurá-lo para postar automaticamente no facebook assim que publicar um novo artigo.
Sim, o Blogger irá solicitar as permissões necessárias para que ele possa publicar no seu mural do facebook.

Verifica o artigo abaixo:
http://www.wikihow.com/Integrate-Your-Blogger-Post-With-Facebook,-Twitter,-and-SMS-with-Twitterfeed

Boa sorte!

Obrigado pela atenção. Na verdade o que estou querendo fazer é criar um app que publique no próprio mural do usuário (quando ele permitir). Ao entrar no site a pessoa seria redirecionada para o link em que o app pede a permissão, após isso o próprio app direciona de volta o usuário ao site e publica determinada mensagem em seu mural. O problema é que isso ultrapassa bonito meus conhecimentos hahaha, abrçs.

Legal William,

Você pode encontrar mais dicas referente a sua necessidade nos seguintes artigos:

Facebook php sdk, postando mensagens no mural do usuário
Manipulando fotos no facebook com sdk para php

Boa sorte!

Como faço para deslogar o usuário depois?

Olá Alex,

Você pode solicitar a URL de logout do facebook por API. Mais detalhes em:
http://developers.facebook.com/docs/reference/php/facebook-getLogoutUrl/

Boa sorte!

É estranho, pois desconecta do facebook, porém na minha página permanece logado.

Olá, Pasquati. Blog sensacional.

Cara, não estou conseguindo capturar os livros do profile do usuário. No graph api ele cita que a permissão publish_action é suficiente, mas não consigo. Queria imprimir na pag do app apenas o nome e os livros do usuário.

Valeu

Olá Inaldo,

Para obter a lista de livros, tente fazer o seguinte:

  • Solicitar a permissão user_about_me
  • requisitar:
  • $livros = $facebook->api('/me/books');
    var_dump($livros);
    

Boa sorte!

valeu demais, pasquati. no entanto, não teria como, através da api do facebook, ter uma resposta similar como se estivesse capturando apenas o nome do sujeito?

por exemplo, se eu tentar:

$nome_usuario = $facebook->api('/me');
echo $nome_usuario['name'],

será mostrado no meu browser apenas o nome do usuário. minha pergunta é: não haveria nada similar com os books do perfil do user?

eu tentei isso:

$livros = $facebook->api('/me/books.reads');
echo $livros,

ele só responder a palavra “Array”.

valeu demais.

Olá Inaldo,

Tente seguir o exemplo abaixo:

$livros = $facebook->api('/me/books');

if(!empty($livros)) {
	foreach($livros['data'] as $livro) {
		echo $livro['name'] . "<br />";
	}
}

Fazer a requisição no books.reads não me trouxe resultado nenhum. Talvez ainda não esteja habilitado em usuário no brasil. É só uma suposição minha. Entretanto, o exemplo acima esta funcionando.

Boa sorte!


Where's The Comment Form?

Liked it here?
Why not try sites on the blogroll...

%d blogueiros gostam disto: