【问题标题】:How to search Facebook Graph API with multiple words php-sdk如何使用多个单词 php-sdk 搜索 Facebook Graph API
【发布时间】:2012-11-27 10:25:36
【问题描述】:

我正在使用 Facebook php sdk v3.2.0,并且在使用 AND 查询(例如:西瓜+香蕉)搜索帖子时只返回一个空数据集。我目前正在从命令行运行这个脚本,如果这有什么不同的话:

$facebook = new Facebook(array(
 'appId' => 'MY_APP_ID',
 'secret' => 'MY_SECRET',
));

$q = "watermelon+banana" ;

$search = $facebook->api('/search?q='.$q.'&type=post&limit=10');

foreach ($search as $key=>$value) {
  foreach ($value as $fkey=>$fvalue) {
    print_r ($fvalue);
 }
}

当我在浏览器中访问http://graph.facebook.com/search?q=watermelon+banana&type=post 时,我可以看到结果。此外,在查询 $q="watermelon" 时它确实有效。我在不同的机器上试过这个,但也没有骰子。有谁知道发生了什么?

【问题讨论】:

    标签: php facebook facebook-graph-api facebook-php-sdk


    【解决方案1】:

    当您不需要编码时,您正在编码 +。

    所以你在 PHP 中的查询实际上是 http://graph.facebook.com/search?q=watermelon%2Bbanana&type=post&limit=10

    省略 urlencode 函数

    $q = "watermelon+banana" ;
    
    $search = $facebook->api('/search?q='.$q.'&type=post&limit=10');
    

    所以完整的代码看起来像

    <?php
    
    require 'facebook.php';
    
    $facebook = new Facebook(array(
        'appId' => 'YOUR_APP_ID',
        'secret' => 'YOUR_SECRET',
    ));
    
    $q = "watermelon+banana" ;
    
    $search = $facebook->api('/search?q='.$q.'&type=post&limit=10');
    
    foreach ($search as $key=>$value) {
        foreach ($value as $fkey=>$fvalue) {
            print_r ($fvalue);
        }
    }
    
    ?>
    

    【讨论】:

    • 感谢您的回复,不幸的是我仍然得到相同的结果:一个空的数据对象。当你的答案只用“西瓜”这样的一个词时,它就可以了。我的 PHP 配置可能有问题?
    • 我在另一台机器上尝试过,但仍然没有任何结果。我需要调整 sdk 的任何配置吗?
    • @naschans 在 base_facebook.php 中查找第 924 行左右,在 $opts[CURLOPT_URL] = $url; 之后添加 echo $url; 并查看实际构建的 url。
    • 添加回声时它给出:graph.facebook.com/…
    • @naschans 好吧,在你的循环之前print_r($search); 怎么样
    【解决方案2】:
    require '../src/facebook.php';
    
    // Create our Application instance (replace this with your appId and secret).
    $config = array(
      'appId'  => 'xxxxxxxxxxxx',
      'secret' => 'xxxxxxxxxxxxxxxxxx',
      'allowSignedRequest' => false // opt`enter code here`ional but should be set to false for non-canvas apps
    );
      $facebook = new Facebook($config);
      $user_id = $facebook->getUser();
    
      $query = urlencode('india+China');
    $type = 'post';
    $retrive = $facebook->api('/search?q='.$query.'&type='.$type.'&limit=10');
    
    $string= json_encode($retrive );
    $json_a = json_decode($string, true);
    $json_o = json_decode($string);
    
    foreach($json_o->data as $p)
    {
     $text = $p->message;
            $username=$p->from->name;
            $id=$p->from->id;
            echo "<table border=1px>
    <tr>
    <td>
    <td>$id</td>
    <td>$username</td>
    <td>$text</td>
    </tr>
    </table>";
    
    }`enter code here`
    

    【讨论】:

      【解决方案3】:

      您的代码现在应该可以正常工作(已进行所有必要的更改):

      $facebook = new Facebook(array(
        'appId'  => 'xxxxx',
        'secret' => 'xxxxx',
      ));
      
      $q = "watermelon banana"; // dont need to urlencode the string
      
      $q = str_replace(" ","+",$q); // this will replace all occurances of spaces with +
      
      $search = $facebook->api('/search?q='.$q.'&type=post&limit=10');
      
      foreach ($search as $key=>$value) {
        foreach ($value as $fkey=>$fvalue) {
          print_r ($fvalue);
        }
      }
      

      【讨论】:

      • 我试过这个,但它仍然给我一个空对象 {"data":[]} ...当我只用“西瓜”尝试它时它工作正常。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多