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