Ahora, ¿cómo me autentico en el PHP SDK 3.0.0 de Facebook?

Entonces Facebook ha cambiado el proceso de autenticación. De nuevo. El ejemplo en PHP SDK es:

$user = $facebook->getUser(); if ($user) { try { $user_profile = $facebook->api('/me'); } catch (FacebookApiException $e) { error_log($e); $user = null; } } 

Sin embargo, ahora, ¿cómo autenticamos a los usuarios que aún no se han autenticado? ¿Simplemente creamos una instrucción else y una llamada al resultado de $facebook->getLoginUrl() ?

Además, el ejemplo anterior me da un error ya que la llamada a $facebook->getUser() devuelve mi ID de usuario, pero luego mi aplicación se cae al intentar llamar a $facebook->api('/me') dando el error:

Error fatal: OAuthException no detectada: se debe usar un token de acceso activo para consultar información sobre el usuario actual. arrojado en /home/woohoobi/public_html/facebookv2/inc/facebook.php en la línea 560

Cualquier ayuda sobre cómo autenticar a un usuario no autenticado sería genial.

Cuando tu lo hagas

 $user = $facebook->getUser(); 

tener $user not null no significa que tienes un token de acceso válido para hacer algunas llamadas a la API. Simplemente significa que el usuario ha iniciado sesión.

Para comprobar si tiene un token de acceso activo, una forma es intentar hacer una llamada a la API, como el código que escribió en su pregunta:

 require "facebook.php"; $facebook = new Facebook(array( 'appId' => YOUR_APP_ID, 'secret' => YOUR_APP_SECRET, )); $user = $facebook->getUser(); if ($user) { // The user is logged in try { $user_profile = $facebook->api('/me'); // Here : API call succeeded, you have a valid access token } catch (FacebookApiException $e) { // Here : API call failed, you don't have a valid access token // you have to send him to $facebook->getLoginUrl() $user = null; } } // else : the user is not logged in 

Entonces tienes 2 casos en los que necesitas enviar a tu usuario a $facebook->getLoginUrl() y en ambos casos, hicimos $user == null . Entonces solo tenemos que agregar:

  Logout of Facebook  Login with Facebook  

Para obtener información completa, puede ver el ejemplo del Facebook PHP SDK, que está bien documentado.

Espero que ayude.

¡Esto me ayudó mucho! Entonces … el usuario solo tiene que aceptar primero su aplicación para usar userdata.

   top.location.href='" . $facebook->getLoginUrl() . "'"); ?> 

Estaba teniendo el mismo problema con la llamada a getUser () que devuelve 0. Un día estaba funcionando, y el siguiente no. Lo que no me di cuenta es que el PHP SDK está destinado a ser utilizado en conjunción con JS SDK. Debes seguir estas instrucciones: https://developers.facebook.com/docs/reference/javascript/ – incluye la configuración después y debes ordenarla.