如何转换facebook图形JSON输出?

时间:2012-07-04 10:57:26

标签: php json facebook-graph-api

我不确定我是否真的做得对,但从我在youtube上观看的教程中得到了一小段代码,不幸的是,那个人从来没有发过第2或第3部分所以只留下了他写的内容第一个视频。

我一直在尝试访问所有可用的PUBLIC帖子,并通过链接轻松访问这些帖子:https://graph.facebook.com/search?q=i通过了我的考试& type = post& locale = en_GB

它提供了似乎是一大堆信息,但我如何使用PHP将这种明显的JSON输出处理成可理解的信息?我已经在一个类似的网站上看到它在互联网上掀起波澜,并希望自己尝试一下。

这可以使用以下代码:

$fbquery = "https://graph.facebook.com/search?q=i hate my boss&type=post";
$fb = file_get_contents($fbquery, 'rb');
$fbarray = json_decode($fb, true);
echo $fbarray['message'];

或者我在哪里错了?请记住,它的公共信息可用并使用任何地址栏中的链接生成和输出,无需用户登录或使用访问令牌。

感谢您的帮助和赞赏!

戴夫。

2 个答案:

答案 0 :(得分:0)

在json_decode之后你得到一个对象。

如果您执行$ fbarray->数据,您将获得一个对象数组。 循环每个对象并检查其类型。

喜欢

for(key in $fbarray->data){
  $element = $fbarray->data[key]; // you get each element.
  if($element->type =="photo") // check for different types
  {
     // display as photo.
    echo '<img src="$element->picture">';
  }
  if($element->type =="status") 
  {
     // display message.
    echo $element->message;
  }
}

您可以使用在线json编辑器(如jsonedtor)来获取树状视图。这有助于理解json的树结构。

答案 1 :(得分:0)

你在这里遇到了一些问题。 1)您应该对搜索字符串进行urlencode。其次,$fbarray是一个对象。你不会得到一个项目。试试这段代码:

$str = "i hate my boss";
$str = urlencode($str);
$fbquery = "https://graph.facebook.com/search?q={$str}&type=post";
$fb = file_get_contents($fbquery, 'rb');
$fbarray = json_decode($fb, true);
foreach ($fbarray as $item) { 
   echo $item['message'];
}

要测试这样的公共查询,您可以将$fbquery网址粘贴到浏览器的地址栏中,看看是否返回了数据。