Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Miudadestimida

Verificar se utilizador está logado no Facebook. É possível?

Recommended Posts

Miudadestimida

Boa Tarde.

Eu tenho um script que só queria que fosse activado se o utilizador estivesse "logado" no facebook. Existe alguma maneira através de PHP de verificar isso? Talvez através dos cookies? Existe algum plugin do facebook que mostre esta informação?

Já procurei muito e ainda não encontrei solução para esta situação.

Desde já agradeço a vossa ajuda!

Share this post


Link to post
Share on other sites
brunoais

Eu já estive a pesquisar um pouco. Existe uma API para isso em que registas o teu programa e pouco mais. Eu tb li em algum lado q depois ficas com um ID unico e podes aceder às contas dos utilizadores do facebook qd quiseres (dependendo das permissões q tiveres).

AVISO: Para poderes ter acesso à informação de cda utilizador do facebook ele tem que dar permissão ao teu programa para aceder aos dados.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
morsa

Podes ser mais específico?

Tens aqui o SDK do facebook para PHP

https://github.com/facebook/php-sdk

E no exemplo:

https://github.com/facebook/php-sdk/blob/master/examples/example.php

Precisas de criar uma facebook app - uma aplicação do facebook - que será o que te permite aceder aos dados do utilizador. Esta aplicação do Facebook precisa de um URL válido. Sem um URL válido não vais ter grande sorte (perdi horas com isto!!). Penso que depois não é necessário que o utilizador permita o acesso para verificar se ele está ou não logado, até porque é o PC do cliente que vai aceder ao teu servidor, logo não faz grande diferença. Somente se quiseres puublicar ou aceder às informações do utilizador do Facebook é que precisas que ele dê permissões para tal.

Há uma outra hipótese, se não me engano, com Javascript. Se quiseres posso procurar. Embora também precises de criar uma aplicação do facebook.

Vê também este link:

http://developers.facebook.com/docs/reference/php/

Share this post


Link to post
Share on other sites
KTachyon

Penso que não é necessário teres uma app (ou que o utilizador tenha dado permissões a uma app tua) para poderes saber se a pessoa está ou não loggada no Facebook. Apenas não consegues saber mais nenhuma informação.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
morsa

@KTachyon - Talvez com a API antiga não fosse necessário. Com a nova tens que autorizar, inclusivamente.

Portanto, do que consegui apurar. É necessário ir a https://developers.facebook.com/apps e criar a aplicação. Definir o nome e o URL onde a aplicação ira trabalhar. Após isto, e eu testei, é preciso esperar alguns minutos para que a aplicação se propague aos vários servidores do Facebook.

Uma vez definidos os parâmetros, é necessario incluir o SDK do facebook (dos links acima). Copiei o file do example e modifiquei-o para o seguinte:

// o ficheiros que estão no Facebook SDK do GIT
require '../src/facebook.php';

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
  'appId'  => 'chave da aplicação criada',
  'secret' => 'secret da aplicação criada',
)); 

// Get User ID
$user = $facebook->getUser();

// se $user = 0 é porque não estava logado ou a aplicação não tem permissões
// para aceder aos dados do utilizador, incluido verificar se está logado no FB
// portanto, é necessário criar um link para loggar o user e dar permissões 
// para a nossa aplicação poder utilizador os dados do utilizador
if (!$user) 
    {
        echo "User não logado ou a applicação não é permitida pelo utilizador <br />";
        $loginUrl = $facebook->getLoginUrl();
        echo '<a href="' . $loginUrl .'"> Login </a>';
    } else 
        {
            echo "User loggado. <br/> ";
        // utilizador está logado e tentar obter os dados do utilizador
        try 
        {
            $user_profile = $facebook->api('/me');
            echo "<pre>";
            print_r($user_profile);
        } 
            catch (FacebookApiException $e) 
        {
            error_log($e);
            $user = null;
        }
    }

O código está comentado q.b. Acho que não preciso de explicar muito mais.

E ficou funcional. Podem testar em http://www.morsadesign.com/facebook_test/examples/. Contudo, é sempre necessário que o utilizador dê permissões à aplicação. Foi a única forma que consegui em PHP. Mais uma vez reitero que já fiz algo parecido em Javascript e que é possível, com algum tipo de "hack" saber se o user está loggado ou não.

Espero que ajude de alguma forma.

1abraço!

Share this post


Link to post
Share on other sites
KTachyon

Aquilo que disse é possível através do SDK Javascript.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.