Ir para o conteúdo
  • 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?

Mensagens Recomendadas

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!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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/

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.