Facebook JSON通过浏览器和脚本/ PHP访问时返回不同的数据

时间:2013-01-02 04:46:05

标签: php facebook

我通过此网址找到了一个Facebook Feed: https://www.facebook.com/feeds/page.php?id=131872766880896&format=json

它是由URL指定的JSON格式。

当我在浏览器上输入此URL时,我会获得有效的JSON。但是,如果我要从PHP页面请求此URL,要么使用PHP脚本,如file_get_contents,然后使用json_decode,要么使用jQuery getJSON,我得到的是HTML响应,这实际上是一个Facebook页面,要求我升级浏览器。通过将上述URL输入JSON Lint验证器,可以看到此响应的HTML代码。

我必须使用这种方法,因为我正在构建feed的站点没有与之关联的App ID,所以除非使用个人Facebook帐户,否则我无法获得访问令牌,这也不是由于online_access的弃用,这是一个可行的选择,这意味着我必须每60天手动重新生成一个长期访问令牌。或者还有另一种解决方法吗?我只需要在页面的Feed上显示最后一个条目,所以我想在$ data ['entries'] [0] ['content']中获取内容,其中$ data是JSON对象。

这里的帖子Loading facebook wall feed JSON issues表明用户最终通过PHP加载它,然后通过AJAX填充他的页面。但如上所述,通过PHP加载它会给我输入我想要用到JSON Lint的Facebook提要URL生成的HTML代码块。这就是我的PHP代码:

<?php
$feed = file_get_contents('https://www.facebook.com/feeds/page.php?id=131872766880896&format=json');
echo $feed;
?>

1 个答案:

答案 0 :(得分:0)

Facebook正在检查用户代理HTTP标头 - 因此,如果您想以这种方式访问​​“受保护”的资源,则必须使用您的请求发送一个用户代理标头,该请求看起来像当前的“真实”浏览器。 / p>