[英]how to do fql.multiquery using facebook php sdk 3.0
我正在从2.x PHP SDK迁移到3.x. 所有多重调用都被打破,我无法弄清楚如何解决。
使用oauth javascript工作的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 SDK进行多重查询的帮助表示赞赏。
对于您的特定查询,请使用新的 fql
Graph API端点,并且只使用一个查询:
$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
!
只需将查询作为关联数组传递:
$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,
));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.