2012-08-02 3 views
7

Ich versuche, den Facebook-Benutzerstatus mithilfe von Graph API zu aktualisieren. Mein Code istEin aktives Zugriffs-Token muss verwendet werden, um Informationen über den aktuellen Benutzer abzufragen. Graph-API-Ausnahme

<?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); 
    } 
?> 

Das Problem ist, dass es einen Laufzeitfehler wie Fatal error zeigt: Uncaught OAuthException: Ein aktiver Zugriffstoken verwendet werden, müssen Informationen über den aktuellen Benutzer abzufragen. Ich habe den Access Tocken generiert. Wo ich das verwenden, um diese Ausnahme im Voraus Dank

+0

_ „Ich habe den Zugang Tocken generiert haben.“ _ - wo und _wann_ Sie tat erstelle es? Klingt so, als würden Sie ein bereits abgelaufenes Token verwenden. Sie können das Debug-Tool verwenden, um zu überprüfen, ob Ihr Token noch gültig ist oder nicht: https://developers.facebook.com/tools/debug – CBroe

+1

Das liegt daran, dass $ facebook-> getUser() 0 zurückgibt und der Benutzer nicht Anmeldung. –

Antwort

32

zu entfernen versuchen, die Linie zu ändern:

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

zu

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

Versuchen Sie auch Ihre sdk aktualisieren, wenn Sie nicht die neueste verwenden Version und wenn Sie nur die SDK aktualisiert und es verursachte den Ärger, als Sie versuchen können, die Version herunterzustufen und zu überprüfen.

+1

ein Grund, warum das im Gegensatz zu mir funktionieren würde? – Mike

+0

nicht sicher, aber es hat für mich funktioniert ... – happyhardik

+5

nun, das ist facebook! bizare Fehler, und das größte Problem ist, dass dieser Fehler durch viele andere Probleme verursacht werden kann. –

5

löschen Sie den Cache & Cookies (wenn Sie testen oder die Entwicklung von Applikation) und wie folgt Bitte: -

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

* sidenote: * Denken Sie daran, 'exit;' nach 'header ('Ort: $ url');' – Raptor

+1

Tippfehler anzurufen in Ihrer Randnotiz: Es sollte Header sein ('Location:'. $ url); Wir können die Variable nicht in einfachen Anführungszeichen verwenden oder sie sollte in doppelten Anführungszeichen stehen. –

+0

Ja. Es ist ein dummer Tippfehler. Danke für die Erinnerung. (kann aber nicht bearbeiten) – Raptor

Verwandte Themen