Autenticação do Facebook usando PHP-SDK

Estive tentando por alguns dias agora sem sorte, consegui usar o example.php que vem com o PHP-SDK e funcionou perfeitamente. Eu só preciso armazenar a session retornada e usá-la mais tarde para poder acessar sem re-autenticar.

Eu tentei armazenar as sessões em um campo serializado em um database e, em seguida, restaurando os dados, desistenciando-o e usando a function setSession no php-sdk para recuperar a autenticação. Infelizmente, isso não funcionou,

Aqui está um link para uma pergunta anterior com os exemplos de código.

Facebook OAuth recupera informações com base na session armazenada

Conselho por favor?

Atualização: Acesso off line agora desativado . Use outra coisa em vez disso.


Se você quiser usar o token de access do usuário mesmo depois que ele desconectou seu aplicativo, você deve solicitar a permissão offline_access .

Com o Facebook SDK v3 ( veja o github ), é bastante simples. Para registrar alguém com a permissão offline_access , você perguntará quando você gerar o URL de login. Aqui é como você faz isso.

Obter o token de access off-line

Primeiro, você verifica se o usuário está logado ou não:

 require "facebook.php"; $facebook = new Facebook(array( 'appId' => YOUR_APP_ID, 'secret' => YOUR_APP_SECRET, )); $user = $facebook->getUser(); if ($user) { try { $user_profile = $facebook->api('/me'); } catch (FacebookApiException $e) { $user = null; } } 

Se ele não estiver, você gera o URL “Login with Facebook” solicitando a permissão offline_access :

 if (!$user) { $args['scope'] = 'offline_access'; $loginUrl = $facebook->getLoginUrl($args); } 

E, em seguida, exiba o link no seu modelo:

  Login with Facebook  

Então você pode recuperar o token de access off-line e armazená-lo. Para obtê-lo, ligue para:

 if ($user) { $token = $facebook->getAccessToken(); // store token } 

Use o token de access off-line

Para usar o token de access off-line quando o usuário não está logado:

 require "facebook.php"; $facebook = new Facebook(array( 'appId' => YOUR_APP_ID, 'secret' => YOUR_APP_SECRET, )); $facebook->setAccessToken("..."); 

E agora você pode fazer chamadas de API para este usuário:

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

Espero que ajude !