Facebook, Verificando se usuário curtiu fan page !

Posted on janeiro 11, 2013. Filed under: Facebook, JavaScript, PHP | Tags:, , |

Introdução

Neste artigo vamos demonstrar como você pode verificar se o usuário que acessa sua aplicação no facebook curtiu ou não uma determinada fan page.

Verificando se o usuário curtiu a fan page

Informações necessárias para nosso script:

  • Ter em mãos o APP_ID e o SECRET da app criada.
  • ID da Fan Page que deseja verificar se o usuário curtiu ou não.
  • Solicitar no mínimo a permissão user_likes, para podermos obter acesso ao likes realizados pelo usuário:
  • // verificar a necessidade de solicitar permissoes
    $permissions = $facebook->api("/me/permissions");
    if(!array_key_exists('user_likes', $permissions['data'][0])) {
            header( "Location: " . $facebook->getLoginUrl(array("scope" => "user_likes")) );
            exit;
    }
    
  • Código:
  • Para obter a informação se o usuário curtiu ou não a fan page, precisamos fazer uma consulta FQL (Facebook Query Language). FQL é uma maneira de solicitar dados de usuário usando um estilo de linguagem parecido com SQL.

    // id do usuário logado
    $facebook_user_id = $facebook->getUser();
    
    // verifica se usuário curtiu a fanpage
    $fql = "SELECT uid FROM page_fan WHERE page_id = '$FANPAGE_ID' AND uid = '$facebook_user_id'";
    $isFan = $facebook->api(array(
              "method" => "fql.query",
              "query"  => $fql,
    ));
    
    if($isFan) {
            echo "Usuário curtiu fanpage!";
    } else {
            echo "Usuário não curtiu fanpage!";
    }
    

Veja que devemos informar qual é o ID da Fan Page que deseja verificar e o ID do usuário que deseja checar. No caso, você pode colocar o id do usuário que esta logado na sua app.

Simples não ? Vamos agora colocar tudo junto em um único script:

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

// ATENCAO, configurar os parametros abaixo
$APP_ID = ""; // id da app
$SECRET = ""; // secret da app
$FANPAGE_ID = ""; // id da fanpage

// objeto do facebook
$facebook = new Facebook(array(
  'appId'  => $APP_ID,
  'secret' => $SECRET,
));

$facebook_user_id = $facebook->getUser();
if ($facebook_user_id) {
  try {
        // verificar a necessidade de solicitar permissoes
        $permissions = $facebook->api("/me/permissions");
        if(!array_key_exists('user_likes', $permissions['data'][0])) {
                header( "Location: " . $facebook->getLoginUrl(array("scope" => "user_likes")) );
                exit;
        }

        // verifica se usuario curtiu a fanpage
        $fql = "SELECT uid FROM page_fan WHERE page_id = '$FANPAGE_ID' AND uid = '$facebook_user_id'";
        $isFan = $facebook->api(array(
                  "method" => "fql.query",
                  "query"  => $fql,
        ));

        if($isFan) {
                echo "Usuario curtiu fanpage!";
        } else {
                echo "Usuario nao curtiu fanpage!";
        }

  } catch (FacebookApiException $e) {
        echo $e;
        $user = null;
  }
} else {
        // usuario nao logado, solicitar autenticacao
        $loginUrl = $facebook->getLoginUrl();
        header("Location: " . $loginUrl);
        exit;
}

Usando Javascript

Essa função pode ser útil no SDK do facebook para outras linguagens. Destaco o SDK para javascript, que é muito utilizado.

Vejamos como implementar no javascript:

FB.api({
        method: 'fql.query',
        query:  'SELECT uid FROM page_fan WHERE uid=' + user_id + ' AND page_id=' + fanpage_id
    }, function(resp) {
        if (resp.length) {
            alert('Usuario curtiu fanpage!')
        } else {
            alert('Usuario NAO curtiu fanpage!');
        }
    }
);

Colocando o código em um javascript funcional:

<html>
<head>
        <title>Teste de Login Facebook</title>
<script src="http://connect.facebook.net/en_US/all.js"></script>

<script>

// ATENCAO, configurar os parametros abaixo
var app_id = "";
var fanpage_id = "";

FB.init({
        appId  : app_id,
        status: true, cookie: false, xfbml: false, oauth: true
});

function usuarioCurtiuFanpage() {
        var user_id = (FB.getAuthResponse() || {}).userID

        if(!user_id) {
                return false;
        }

        FB.api({
                method: 'fql.query',
                query:  'SELECT uid FROM page_fan WHERE uid=' + user_id + ' AND page_id=' + fanpage_id
            }, function(resp) {
                if (resp.length) {
                    alert('Usuario curtiu fanpage!')
                } else {
                    alert('Usuario nao curtiu fanpage!');
                }
            }
        );
}

function verificaCurtir() {

        FB.getLoginStatus(function(response) {
                if (response.status !== 'connected') {
                        FB.login(function(response) {
                                if (response.authResponse) {
                                        // pronto, usuario logado
                                        usuarioCurtiuFanpage();
                                } else {
                                        alert('Voce nao esta autorizado a usar essa app!');

                                }
                        }, {scope: 'user_likes'});
                } else {

                        // pronto, usuario logado
                        usuarioCurtiuFanpage();
                }
        });

}

</script>
</head>

<body>
<a href="#" onClick="verificaCurtir();">Verificar fanpage</a>

</body>
</html>

Observações

  • Existem outras formas de verificar se o usuário curtiu a fan page. Uma delas é caso você esteja usando a app através de um Page Tab. A informação do curtir a fan page pode ser obtida através do parâmetro signed_request. Caso queira aprender a trabalhar com os dados do signed_request, leia o artigo http://developers.facebook.com/docs/howtos/login/signed-request/

    Boa sorte!!

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

3 Respostas to “Facebook, Verificando se usuário curtiu fan page !”

RSS Feed for Pasqua Tecnologia Comments RSS Feed

ótima dica, obs: para quem precisa autenticar permissões no aplicativo deve trocar
header( “Location: ” . $facebook->getLoginUrl(array(“scope” => “user_likes”))
por
echo(” top.location.href='” . $facebook->getLoginUrl(array(“scope” => “user_likes”)) .”‘;”);

Obrigado pela dica Israel!

Olá.. Estou tentando usar essa validação de quem curtiu a fan page,
mas infelizmente está funcionando só pra mim que sou criador do app…

Quando curto aparece o que eu quero porem quando outras pessoas usam e curtem aparece o que é pra ser exibido pra quem não curtiu! Ou seja uma imagem indicando pra curtir a fan page!

Pode me ajudar nisso??

Obrigado…


Where's The Comment Form?

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

%d blogueiros gostam disto: