首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用FacebookphpSDK3.0实现fql.multiquery

如何使用FacebookphpSDK3.0实现fql.multiquery
EN

Stack Overflow用户
提问于 2011-10-19 19:33:08
回答 2查看 3.6K关注 0票数 1

我正在从2.xPHPSDK迁移到3.x。所有的多查询调用都中断了,我还没有弄清楚如何解决。

使用的facebook连接登录可以工作,并允许当前用户访问服务器端的数据。我假设这验证了我的访问令牌是合法的。

我尝试了以下代码变体,每次都会得到错误:

老路:

代码语言:javascript
复制
        $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抛出

采用了新的方法:

代码语言:javascript
复制
        $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进行多查询的帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2011-10-19 20:13:49

对于特定的查询,只在一个查询中使用新的 fql Graph端点:

代码语言:javascript
复制
$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!

票数 3
EN

Stack Overflow用户

发布于 2013-07-04 09:56:02

只需将查询作为关联数组传递:

代码语言:javascript
复制
  $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,
  ));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7827038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档