2011-11-17 119 views
3

我正在玩FQL和Facebook的iFrame应用程序。我刚开始最近得到一个间歇性的错误,当我尝试一个简单的FQL查询,如获取用户的朋友一个数组...我收到以下错误信息:Facebook查询失败PHP - 访问令牌问题

Fatal error: Uncaught Exception: 102: Requires user session thrown in base_facebook.php line 1039

唯一出现清除此消息正在清除我所有的cookies。只需注销并返回到Facebook并不能阻止它。令人沮丧的事情是,我无法重复错误的需求,这使得很难追查正在发生的事情,但从看着base_facebook.php上的那条线看起来好像抛出了异常,因为访问令牌不再存在有效

我该如何解释?即我如何检查访问令牌是否仍然有效,如果不请求/设置新访问令牌?我正在使用带有CodeIgniter框架的最新Facebook PHP SDK v3。

有一个类似的问题,但它与SDK的早期版本有关,因此不再有效。

编辑:尝试了其他一些事情...当索引页检测到用户登录时,它不会重定向到oauth链接(即https://www.facebook.com/dialog/oauth?client_id-etc。)。作为测试,我尝试将该链接放在页面上以尝试点击并强制进行新的身份验证。那也行不通。我试着将访问标记设置为null,然后获取一个新的标记。那里也没有运气。唯一的解决办法仍然是清除浏览器中的所有cookies。

任何链接到信息/技巧如何调试/解决方案等,非常感谢一如既往!

下面的代码的轮廓:

public function index() 
{ 
    $this->load->library('facebook'); 

    // check if we can retrieve user id from facebook -  

    $user = $this->facebook->getUser(); 

    if (!$user) 

    { // if no user id there then redirect to Facebook login page 

     $this->loginByFacebook(); 
    } 
    else // if we have id then we have a logged in FB user 
    {       

     $fb_uid = $user; 
     $fb_usr = $this->facebook->api('/me'); 

     print_r($fb_usr); // This always works and outputs my FB info 

    // HERE I PUT A LINK TO NEW PAGE WHICH IS CREATED WITH FUNCTION BELOW 

} 

function getFriendsList() { 

    //echo "here"; 
    $this->load->library('facebook'); 
    //$access_token = $this->facebook->getaccessToken(); 
    $query = ' 
     SELECT first_name, last_name, name, uid,pic_square FROM user 
     WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me()) 
     ORDER BY name'; 


     // I have tried running the query by getting access token and supplying it and without and still have the same problem. 

    //$FQL = array ("method" => "fql.query", "query" => $query, "access_token" => $access_token); 
     $FQL = array ("method" => "fql.query", "query" => $query); 

    $data = $this->facebook->api($FQL);  

    return $data;   

} 
+2

不只是你。我刚刚得到它。我在一台使用FF的PC上。今天早上刚刚发生......脚本昨天工作正常。昨天和今天没有代码变化。 – 2012-01-13 14:24:40

回答

1

我要关闭这个作为进行更多的测试后,我不能出现始终如一地重建行为。在Mac上使用Chrome时,似乎会出现此错误,但在其他浏览器中无法使用Chrome,而在PC上则不会。我做的进一步测试是进入Chrome设置并仅从facebook.com删除cookie,但仍未清除它。只有清除所有Cookie才能解决问题。

迄今为止没有人对此提供过任何建议(并且我无法在网上找到任何其他参考),这让我担心这是否会影响我的特定设置。

+0

不,我也是......不知道问题是什么。 –

0

在我向我的fql查询添加access_token后,出现在我的应用程序中。我再次删除它,错误仍然存​​在。我的问题SEEMS是我没有预先验证(login-url)而调用该函数的。不知怎的,它后来工作。希望这可以帮助。

0

我也有这个错误。我暂时解决了它。只需卸载您网页上的应用程序,然后再次登录应用程序。它应该工作正常。但它不是永久的解决方案。卸载应用程序,

settings -> apps -> click x button on corresponding apps.