0

我有一个通过以下 URL 定位的 Facebook 提要: 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 代码。

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

此处的帖子Loading facebook wall feed JSON issues显示用户最终通过 PHP 加载它,然后通过 AJAX 填充他的页面。但也如上所述,通过 PHP 加载它会为我提供 HTML 代码块,该代码块是通过将我想要使用的 Facebook 提要 URL 输入到 JSON Lint 中生成的。这是我的 PHP 代码的样子:

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

1 回答 1

0

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

于 2013-01-03T10:48:57.750 回答