Facebook Uncaught OAuthException: se debe usar un token de acceso activo para consultar información sobre el usuario actual.

He estado luchando por descubrir qué está pasando con esto. Mis scripts funcionaban bien por un tiempo y de repente se detenían a medias.

Estoy accediendo a la API y estoy obteniendo un token de acceso. Con el token de acceso, puedo acceder a la información pública de los usuarios sin problemas. Sin embargo, cuando trato de publicar información en su cuenta de FB obtengo este error.

Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user. 

¿Alguna idea de lo que está pasando aquí? También estoy usando sesiones en mi sitio para realizar un seguimiento de los ID de usuario internos. No estoy seguro si mis sesiones podrían estar causando un problema.

Esta es mi secuencia de comandos de carga donde recibo un error.

 require 'facebook/src/facebook.php'; // Create our Application instance (replace this with your appId and secret). $facebook = new Facebook(array( 'appId' => '12345678', 'secret' => 'REMOVED', 'fileUpload' => true, 'cookie' => true, )); $facebook->setFileUploadSupport(true); $me = null; // Session based API call. if ($session) { try { $uid = $facebook->getUser(); $me = $facebook->api('/me'); } catch (FacebookApiException $e) { error_log($e); } } // login or logout url will be needed depending on current user state. if ($me) { $logoutUrl = $facebook->getLogoutUrl(); } else { $loginUrl = $facebook->getLoginUrl(); } $photo_details = array('message' => 'my place'); $file='photos/my.jpg'; //Example image file $photo_details['image'] = '@' . realpath($file); $upload_photo = $facebook->api('/me/photos', 'post', $photo_details); 

Simplemente verifique el ID de usuario de Facebook actual $user y si devuelve null, entonces necesita volver a autorizar al usuario (o use el $_SESSION usuario $_SESSION personalizado, no recomendado)

 require 'facebook/src/facebook.php'; // Create our Application instance (replace this with your appId and secret). $facebook = new Facebook(array( 'appId' => 'APP_ID', 'secret' => 'APP_SECRET', )); $user = $facebook->getUser(); $photo_details = array('message' => 'my place'); $file='photos/my.jpg'; //Example image file $photo_details['image'] = '@' . realpath($file); if ($user) { try { // We have a valid FB session, so we can use 'me' $upload_photo = $facebook->api('/me/photos', 'post', $photo_details); } catch (FacebookApiException $e) { error_log($e); } } // login or logout url will be needed depending on current user state. if ($user) { $logoutUrl = $facebook->getLogoutUrl(); } else { // redirect to Facebook login to get a fresh user access_token $loginUrl = $facebook->getLoginUrl(); header('Location: ' . $loginUrl); } 

He escrito un tutorial sobre cómo subir una imagen al muro del usuario.

Utilizar:

 $facebook->api('/'.$facebook_uid) 

en lugar de

 $facebook->api('/me') 

funciona.

Entonces tuve el mismo problema, pero fue porque estaba guardando el token de acceso pero no lo estaba usando. Podría ser porque estoy súper dormido debido a las fechas de vencimiento, ¡o quizás simplemente no pensé en eso! Pero en caso de que alguien más esté en la misma situación:

Cuando inicio sesión en el usuario guardo el token de acceso:

 $facebook = new Facebook(array( 'appId' => , 'secret' =>  )); $accessToken = $facebook->getAccessToken(); //save the access token for later 

Ahora cuando hago solicitudes a Facebook, solo hago algo como esto:

 $facebook = new Facebook(array( 'appId' => , 'secret' =>  )); $facebook->setAccessToken($accessToken); $facebook->api(... insert own code here ...) 

Después de un cierto período de tiempo, su token de acceso caduca.

Para evitar esto, puede solicitar el permiso ‘offline_access’ durante la autenticación, como se indica aquí: ¿Los tokens de acceso de Facebook Oauth 2.0 caducan?

Tuvo el mismo problema y la solución fue reautorizar al usuario. Verifíquelo aquí:

  '1424980371051918', 'secret' => '2ed5c1260daa4c44673ba6fbc348c67d', 'fileUpload' => false // optional ); $facebook = new Facebook($config); //Authorizing app: ?> Login con fb 

Proyecto guardado y abierto en mi entorno de prueba y funcionó de nuevo. Como lo hice, puedes comentar tu código anterior e intentarlo.

Tengo el mismo problema cuando trato de obtener información de los usuarios sin autenticación.

Compruebe si tiene loggen antes de cualquier solicitud.

  $uid = $facebook->getUser(); if ($uid){ $me = $facebook->api('/me'); } 

El código anterior debería resolver su problema.

Tuve el mismo problema, pero puedo resolver este problema limpiando las cookies y el caché de mi navegador (ctrl+shift+R) . Además, debe asegurarse de que su token de acceso esté activo.

Espero que esto te ayude a resolver tu problema.