我正在从2.xPHPSDK迁移到3.x。所有的多查询调用都中断了,我还没有弄清楚如何解决。
使用的facebook连接登录可以工作,并允许当前用户访问服务器端的数据。我假设这验证了我的访问令牌是合法的。
我尝试了以下代码变体,每次都会得到错误:
老路:
$id = $fb->getUser(); // RETURNS A VALID USER ID
$fql = '{ "friends" : "SELECT uid FROM user WHERE has_added_app=1 and uid IN (SELECT uid2 FROM friend WHERE uid1 = '.$id.')", "profiles" : "SELECT uid, name, pic_square FROM user WHERE uid IN (SELECT uid FROM #friends)"}';
$response = $fb->api( array('method' => 'fql.multiquery','queries' => $fql));提供错误: PHP致命错误:未捕获异常: 102:要求用户会话\n抛出
采用了新的方法:
$id = $fb->getUser(); // RETURNS A VALID USER ID
$fql = '{ "friends" : "SELECT uid FROM user WHERE has_added_app=1 and uid IN (SELECT uid2 FROM friend WHERE uid1 = '.$id.')", "profiles" : "SELECT uid, name, pic_square FROM user WHERE uid IN (SELECT uid FROM #friends)"}';
$response = $fb->api( array('method' => 'fql.query','query' => $fql));给出错误: PHP致命错误:未察觉的异常: 601:解析器错误:在0位置意外的“{”
任何了解如何使用新的PHP进行多查询的帮助都将不胜感激。
发布于 2011-10-19 20:13:49
对于特定的查询,只在一个查询中使用新的 fql Graph端点:
$user = $facebook->getUser();
if ($user) {
try {
$fql = urlencode("SELECT uid, name, pic_square FROM user WHERE is_app_user = 1 AND uid IN (SELECT uid2 FROM friend WHERE uid1 = $user)");
$response = $facebook->api("/fql?q={$fql}");
} catch (FacebookApiException $e) {
echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>';
$user = null;
}
}还可以使用is_app_user而不是不推荐的has_added_app 1!
发布于 2013-07-04 09:56:02
只需将查询作为关联数组传递:
$common_fields_fql = 'SELECT uid, email, contact_email, first_name, last_name, birthday_date, pic_square, sex, hometown_location, current_location, is_app_user FROM user WHERE uid ';
$fql = array(
'friends' => 'SELECT uid2 FROM friend WHERE uid1 = me()',
'friends_details' => $common_fields_fql . 'IN (SELECT uid2 FROM #friends)',
'me' => $common_fields_fql . '= me()',
'family' => 'SELECT uid, birthday, name, relationship FROM family WHERE profile_id = me()',
);
$details = $facebook->api(array(
'method' => 'fql.multiquery',
'queries' => $fql,
));https://stackoverflow.com/questions/7827038
复制相似问题