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.