2012-08-02 15 views
7

Estoy tratando de actualizar el estado del usuario utilizando Facebook Graph API. Mi código esun token de acceso activo debe ser utilizado para consultar información sobre el usuario actual-Graph API excepción

<?php 
    require 'facebook.php'; 
    $facebook = new Facebook(array( 
    'appId' =>'389694921095423', 
    'secret' =>'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 
    'cookie' => true 
    )); 
    $access_token = $facebook->getAccessToken(); 
    echo($access_token); 
    $me = null; 

    try 
    { 
     $uid = $facebook->getUser(); 
     $me = $facebook->api('/me'); 
     echo "Welcome User: " . $me['name'] . "<br />"; 
     //access permission 
     $permissions_needed = array('publish_stream', 'read_stream', 'offline_access', 'manage_pages'); 
     foreach($permissions_needed as $perm) 
     { 
      if(!isset($permissions_list['data'][0][$perm]) || $permissions_list['data'][0][$perm] != 1) 
      {  
      $login_url_params = array(
       'scope' => 'publish_stream,read_stream,offline_access,manage_pages',   
       'fbconnect' => 1,   
       'display' => "page",   
       'next' => 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']  
       );  
      $login_url = $facebook->getLoginUrl($login_url_params); 
      header("Location: {$login_url}"); 
      exit(); 
      } 
     } 
     //Access permission 

     $post_id = $facebook->api("/$uid/feed", "post", array("message"=>"Hello World!")); 
     if(isset($post_id)) 
     { 
      echo "A new post to your wall has been posted with id: $post_id"; 
     } 
    } 
    catch (FacebookApiException $e) 
    { 
     echo($e); 
    } 
?> 

El problema es que muestra un error de tiempo de ejecución como Fatal error: OAuthException no detectada: Un token de acceso activo debe ser utilizado para consultar la información sobre el usuario actual. He generado el Access Tocken. ¿Dónde tengo que usar eso para eliminar esta excepción Gracias de antemano

+0

_ “He generado el Tocken acceso.” _ - dónde y _when_ que hizo crearlo? Parece que estás usando un token ya caducado. Puede utilizar la herramienta de depuración para comprobar si su ficha es aún válida o no: https://developers.facebook.com/tools/debug – CBroe

+1

Esto se debe a $ facebook-> getUser() es devolver 0, y el usuario no es iniciar sesión. –

Respuesta

32

Prueba a cambiar la línea:

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

a

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

tratar también de actualizar el SDK si no está utilizando la última versión y si acaba de actualizar el SDK y causó el problema, entonces puede intentar degradar la versión y verificar.

+1

¿por qué esto funcionaría en lugar de/me? – Mike

+0

no estoy seguro, pero funcionó para mí ... – happyhardik

+5

¡bueno, esto es Facebook! bizare errores, y el mayor problema es que este error puede ser causado por muchos otros problemas también. –

5

Borrar la caché & cookies (si está probando o en desarrollo de aplicaciones) y Por favor, haga la siguiente manera: -

try 
{ 
    $fb_user_info = $facebook->api('/me'); 
} catch (Exception $ex) 
{ 
    $facebook->destroySession(); 
    $params = array(
     'scope' => 'YOUR_PERMISSIONS', 
     'redirect_uri' => 'YOUR_SITE_URL' 
); 
    $fb_login_url = $facebook->getLoginUrl($params); 
    header("Location:" . $fb_login_url); 
} 
+0

* nota al margen: * recuerde llamar a 'exit;' después de 'header ('Ubicación: $ url');' – Raptor

+1

error tipográfico en su nota lateral: debe ser el encabezado ('Ubicación:'. $ url); no podemos usar la variable en comillas simples o debe estar entre comillas dobles –

+0

Sí. Es un error tipográfico estúpido. Gracias por el recordatorio. (no se puede editar) – Raptor

Cuestiones relacionadas