没有登录用户的Facebook Graph API搜索

时间:2010-05-28 14:11:01

标签: php facebook facebook-graph-api

我正在尝试为具有特定搜索字词的群组发布Facebook Graphp API搜索调用。 重要事实是搜索不仅以字词开头的组,还要搜索搜索组名称中的字词。就这样。

FQL => SELECT * FROM groups WHERE groupname LIKE'%term%'

据我所知,这在FQL中是不可能的。因此,我必须使用Graph API搜索。

http://developers.facebook.com/docs/api#search

但即使用户未登录,我也必须发出通话。这可能吗 或者是否有可能在没有用户交互的情况下使用某些卷曲调用登录默认用户(不显示表单)?

如果有更简单的解决方案(例如使用FQL),请告诉我。

2 个答案:

答案 0 :(得分:2)

我使用的是图API,而不是FQL,所以我不能100%确定差异等...但是我尝试的方法是使用http://developers.facebook.com/docs/authentication/#authenticating-users-in-a-web-application处的cURL脚本来获取一个身份验证令牌,然后您必须将收到的身份验证令牌添加到图表参数,如您在网站上看到的(在图表API中测试的一个好方法是点击登录到Facebook时给出的示例喜欢或查询然后复制api代码和分解过程就像那样[测试你可以从查询中获得你想要的结果,测试你可以获得你的身份验证令牌然后结合]以便你知道哪些部分是'问题'部分)。

如果失败,请向下滚动到“使用java脚本进行单点登录”,并查看他们用来从facebook cookie获取身份验证令牌的代码,我注意到您可以访问该cookie来自FQL。

我希望这有一些帮助!如果这些想法不起作用,请告诉我。

乔恩

答案 1 :(得分:1)

使用PHP-SDK 3.1.1,不需要auth或access_token。 此示例假定您在页面上安装了PHP-SDK。

  1. 使用表单将问题发布到页面,获取和发布的参数 被包含在内。这将从搜索https://graph.facebook.com/search?q=facebook&type=group
  2. 返回数组
    <?php
        $q = urlencode($_GET['qs']);
            if(!$_GET['qs']){
            $q = urlencode($_POST['qs']);
                if(!$_POST['qs']){
            $q = "facebook";
            }
        }
        $MEsearch = $facebook->api('/search?q='.$q.'&type=group');
           foreach ($MEsearch as $key=>$value) {
           $i=1;
              foreach ($value as $fkey=>$fvalue) {
              $i++;
              if($fvalue[id]=="h"){
              }else{
                $groupname = $fvalue[name];
                $groupid = $fvalue[id];
                $groupversion = $fvalue[version];
                   echo $groupname. '<br />';
                   echo $groupid. '<br />';
                   echo $groupversion. '<br /><hr />';
              }
           };
        };
    ?>
    

    示例使用情况http://shawnsspace.com/plugins/photofeed.php点击底部的获取插件,然后使用搜索框查看此示例的实际效果。