问题 用jquery获取json的facebook页面提要


我一直试图用jquery从json数据获取facebook页面提要。到目前为止,我已经能够使用我的方法获取页面详细信息,但是当我尝试获取页面的源时它会给我一个错误,而在控制台中它会显示“语法错误:无效标签”。这是我的代码......

    $.getJSON("https://www.facebook.com/feeds/page.php?id=237173582992285&format=json&callback=?", function(results){
    console.log(results);
});

我也用整个代码创建了一个jsfiddle。如果需要,请查看 - > http://jsfiddle.net/yZn7N/。 我可以看到所有的json数据,如果我去指定的链接,他们确实被提取,我不知道是什么导致无效的标签错误。任何形式的帮助解决或解释为什么会发生这种情况将不胜感激。


10166
2017-08-12 23:29


起源



答案:


您需要使用Facebook Graph API才能实现此目的。

https://developers.facebook.com/docs/reference/api/page/#feed

您的电话应更改为:

https://graph.facebook.com/237173582992285/feed?access_token=YOUR-TOKEN-GOES-HERE

您可以尝试使用此测试页面并尝试熟悉图形API。

https://developers.facebook.com/tools/explorer/?method=GET&path=237173582992285%2Ffeed

编辑:

您还可以通过多种格式从页面获取Wall。

JSON https://www.facebook.com/feeds/page.php?format=json&id=237173582992285

原子 https://www.facebook.com/feeds/page.php?format=atom10&id=237173582992285

RSS https://www.facebook.com/feeds/page.php?format=rss20&id=237173582992285


14
2017-08-12 23:50



我在一些博客中看到访问令牌是必需的,但没有任何方法可以在没有访问令牌的情况下执行此操作吗?我的意思是我可以在没有访问令牌的情况下提取页面信息,为什么不提供Feed?可能这是一个愚蠢的问题大声笑。感谢您的回复。 - Foysal Ahamed
当然,有一种方法,使用RSS Feed,只需指定JSON作为您想要的输出格式,您就可以开始了!我编辑了我的帖子。 - Adrian Salazar
我已经把json作为我要求的格式,如果仔细查看给定的url,你会看到它。这里的问题是我正在尝试获取json数据,正如我告诉你的,如果我去了给定的链接,我可以看到所有的json数据(如果你自己看看我会很高兴的)以及屁股rss和atom feed但当我尝试从我的localhost中使用jquery get json调用或ajax调用时,它会失败并在我的控制台中给出错误“无效标签错误”。我希望我能在这里解决问题但更清楚。 - Foysal Ahamed
好的,我用JQuery检查了请求/响应,我有坏消息。你需要&callback =?部分在您的请求中,因为您正在提出跨域请求。这涉及JSONP,没有办法摆脱它。您收到的错误是因为facebook发送的答案不是JSONP格式。您需要通过在您的网站中实施代理来包装Facebook调用,以便您调用您的aspx / php / jsp页面,然后页面调用Facebook,然后页面以适当的格式给您答案(传递是代理 - 页面在同一个域中,如果不是JSONP) - Adrian Salazar
是的,JSON似乎在上个月停止了工作。 :( - Moss


答案:


您需要使用Facebook Graph API才能实现此目的。

https://developers.facebook.com/docs/reference/api/page/#feed

您的电话应更改为:

https://graph.facebook.com/237173582992285/feed?access_token=YOUR-TOKEN-GOES-HERE

您可以尝试使用此测试页面并尝试熟悉图形API。

https://developers.facebook.com/tools/explorer/?method=GET&path=237173582992285%2Ffeed

编辑:

您还可以通过多种格式从页面获取Wall。

JSON https://www.facebook.com/feeds/page.php?format=json&id=237173582992285

原子 https://www.facebook.com/feeds/page.php?format=atom10&id=237173582992285

RSS https://www.facebook.com/feeds/page.php?format=rss20&id=237173582992285


14
2017-08-12 23:50



我在一些博客中看到访问令牌是必需的,但没有任何方法可以在没有访问令牌的情况下执行此操作吗?我的意思是我可以在没有访问令牌的情况下提取页面信息,为什么不提供Feed?可能这是一个愚蠢的问题大声笑。感谢您的回复。 - Foysal Ahamed
当然,有一种方法,使用RSS Feed,只需指定JSON作为您想要的输出格式,您就可以开始了!我编辑了我的帖子。 - Adrian Salazar
我已经把json作为我要求的格式,如果仔细查看给定的url,你会看到它。这里的问题是我正在尝试获取json数据,正如我告诉你的,如果我去了给定的链接,我可以看到所有的json数据(如果你自己看看我会很高兴的)以及屁股rss和atom feed但当我尝试从我的localhost中使用jquery get json调用或ajax调用时,它会失败并在我的控制台中给出错误“无效标签错误”。我希望我能在这里解决问题但更清楚。 - Foysal Ahamed
好的,我用JQuery检查了请求/响应,我有坏消息。你需要&callback =?部分在您的请求中,因为您正在提出跨域请求。这涉及JSONP,没有办法摆脱它。您收到的错误是因为facebook发送的答案不是JSONP格式。您需要通过在您的网站中实施代理来包装Facebook调用,以便您调用您的aspx / php / jsp页面,然后页面调用Facebook,然后页面以适当的格式给您答案(传递是代理 - 页面在同一个域中,如果不是JSONP) - Adrian Salazar
是的,JSON似乎在上个月停止了工作。 :( - Moss


摆脱 &callback=? 来自您的网址。您有一个结果处理程序作为您的函数的一部分。您不需要回调。

这个 应该 给你你想要的结果,但似乎Facebook通过.htaccess政策阻止了jsfiddle。


0
2017-08-13 02:48



我已经尝试了它没有回调的东西,它只是发送一个奇怪的返回空响应的ajax请求。而且就我而言,facebook并没有阻止js小提琴,因为我看到了很多包含facebook api演示的小提琴。事实上我已经为你创造了一个 jsfiddle.net/33e4M 你可以看到它与页面详细信息json数据一起工作正常但是一旦我用页面提交实现相同的东西它就会失败并发送给我并且空响应 - Foysal Ahamed
当我按照编写的方式运行代码时,会有一个 Unexpected token 由于回调而导致的错误。删除 &callback=? 将错误更改为“XMLHttpRequest无法加载...原点 fiddle.jshell.net 不允许“你的另一个小提琴使用不同的端点,它可以有不同的访问规则。这让我觉得Facebook正在削弱这个端点。 - cpilko
它不会解决任何问题,因为facebook不允许使用CORS或JSONP。 - Kit Sunde


您可以通过以下URL获取Facebook页面的JSON Feed:

https://graph.facebook.com/PageName

然后,您可以使用PHP的CURL来获取JSON数据,并使用它做任何您喜欢的事情。有关代码示例,请参阅

http://liljosh.com/facebook-page-json-rss-feed/


-2
2017-07-21 15:25



该端点不会向Feed提供有关页面的一般信息 /PageName/posts 需要access_token。 - Kit Sunde