2012-08-02 17 views
7

我正尝试使用Graph api更新Facebook用户状态。我的代码是必须使用活动访问令牌来查询有关当前用户的信息 - Graph api异常

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

的问题是,它显示了运行时间错误,如致命错误:未捕获OAuthException:活动的访问令牌必须用于查询当前用户的信息。我已经生成了Access Tocken。在那里我用它来消除这种异常 预先感谢

+0

_“我已经生成的访问Tocken。” _ - 哪里和_when_没有你创造它?听起来像你正在使用一个已经到期的令牌。您可以使用调试工具来检查您的令牌是否仍然有效:https://developers.facebook.com/tools/debug – CBroe 2012-08-02 11:51:51

+1

这是因为$ facebook-> getUser()返回0,并且用户不是登录。 – 2013-05-07 15:06:37

回答

32

尝试改变行:

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

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

也可以尝试升级您的SDK,如果你使用的不是最新的版本,如果你刚刚升级了sdk并导致了麻烦,那么你可以尝试降级版本并检查。

+1

为什么这会起作用,而不是/我? – Mike 2013-01-23 18:32:41

+0

不知道,但它对我来说... – happyhardik 2013-01-24 08:25:17

+5

好吧,这是Facebook! bizare错误,而最大的问题是,这个错误也可能是由许多其他问题引起的。 – 2013-02-17 14:43:02

5

清除缓存&饼干(如果你正在测试或开发应用程序) 和 请做如下: -

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

*旁注:*记得在'header('Location:$ url');' – Raptor 2013-10-02 05:03:48

+1

之后调用'exit;'typpo error在你身边注意:它应该是header('Location:'。$ url);我们不能在单引号中使用变量,或者应该使用双引号 – 2013-10-02 12:49:12

+0

是的。这是一个愚蠢的错字。感谢提醒。 (虽然不能编辑) – Raptor 2013-10-03 02:34:58

相关问题