问题 如何使用facebook API获取公共墙贴


我试图从个人资料facebook获取墙贴。我对粉丝页面没有任何问题,我的用户令牌有效(至少对于粉丝页面而言)。

这篇文章的例子: https://www.facebook.com/aurelia.filion/posts/10151342315613445 你可以看到帖子是公开的。

所以我尝试: graph.facebook.com/529628444_10151342315613445?access_token=MY_TOKEN graph.facebook.com/10151342315613445?access_token=MY_TOKEN

它返回:    “错误”:{       “message”:“不支持的获取请求。”,       “type”:“GraphMethodException”,       “代码”:100

在我的Api图浏览器中,我无法看到该用户的帖子。 graph.facebook.com/529628444?fields=posts(529628444是aurelia.filion的id)

那么有可能获得墙贴吗?它是公开的应该是获得它们的一种方式

谢谢


好吧,我将以不同的方式解释,我的目标是通过图表获得此类帖子(除了这些,我可以获得所有其他帖子)

facebook.com/aurelia.filion/posts/10151342315613445

facebook.com/aurelia.filion/posts/10151336175793445

但我收到错误“不支持获取请求”。

我已尝试用户令牌和应用令牌这个链接不起作用: graph.facebook.com/529628444_10151342315613445?access_token=MY_TOKEN

当我尝试使用Feed时,我没有看到我想要的帖子。

如果我要求发布帖子graph.facebook.com/529628444/posts?limit=100&access_token=TOKEN 我可以看到一切(链接,照片等),除了怪异的帖子!

我怎么能得到这些帖子,这是一个象征性的问题,它看起来像是一个状态,是不是得到了,我的意思是我们需要权限吗? graph.facebook.com/529628444?fields=statuses&access_token=TOKEN它不会返回任何结果!它是空的!

编辑


1661
2018-03-25 16:20


起源

当您没有有效令牌时,不确定为什么此页面会向您提供“不支持的获取请求错误”。我已经尝试使用有效的用户和应用访问令牌,并且能够获取数据。如果我在没有令牌或使用过期令牌的情况下尝试,我会得到不受支持的get请求错误,而不是正确的错误。 - cpilko
看看我的 回答问题。它没有比这更简单。 - craned


答案:


编辑

这个答案是在Graph API版本的第一个版本中写回来的。那时您可以使用用户ID获取用户提要,此时用户ID不再在应用之间共享。 facebook也创建了一个 新的API 它只适用于它的一些合作伙伴。

因此,除非用户使用了您的应用,否则您现在无法获得公共用户Feed。你仍然可以获得Pages feed。

旧版

这个答案是针对图形api v1

所以你必须使用它 https://graph.facebook.com/529628444?fields=feed&access_token=YOUR_TOKEN

如果你想要的只是查询公共数据,你可以通过这样做创建一个APP令牌:

https://graph.facebook.com/oauth/access_token?
client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&
grant_type=client_credentials 

并使用此令牌而不是使用您的用户令牌。


11
2018-03-25 16:25



你能更详细地解释一下如何使用公共墙贴文件获取数据 facebook.com/aurelia.filion 墙贴作为一个例子。我不确定如何实现你所描述的内容。谢谢! - MicFin
使用新的Facebook API定义不再起作用。 - fiatjaf
@fiatjaf你说得对,我要更新我的anser - Fabio Antunes


我不知道这篇文章是否太旧了,但我在寻找解决问题的方法时才找到它。

无论如何,我将展示如何设法从公共用户获取提要:

        var fbul = "https://graph.facebook.com/oauth/access_token?type=client_cred&client_id=[AppID]&client_secret=[AppSecret]";
        var fburl = "https://graph.facebook.com/201317759900688?fields=feed&";

        $.get(fbul, function(auth_token){
            $.ajax({
                dataType: "jsonp",
                url: fburl+auth_token,
                success: function(res){
                    console.log(res);

                }
            });
        });

这里有一个小小的解释: 你必须去facebook开发控制台(https://developers.facebook.com)并注册一个新的网络应用程序。只需在顶部导航中继续“我的应用程序”,然后继续“添加新应用程序”。完成后,您可以访问您的应用程序ID和您的APP秘密。

第一个链接“var fbul”是获取访问Feed所需的access_token。

var fbul = "https://graph.facebook.com/oauth/access_token?type=client_cred&client_id=[AppID]&client_secret=[AppSecret]";

只需将[AppID]和[AppSecret]更改为您自己的密钥即可。

第二个链接是访问feed(我们不在这里添加acces_token,因为我们在ajax请求中这样做)

var fburl = "https://graph.facebook.com/201317759900688?fields=feed&";

此处的号码(2013177599 ....)是来自公共站点的频道ID。要获得这个数字,请继续 http://findmyfacebookid.com/ 并输入facebook URL给公共用户。

这几乎是你需要的一切。

现在写下你的ajax请求如下:

$.get(fbul, function(auth_token){
            $.ajax({
                dataType: "jsonp",
                url: fburl+auth_token,
                success: function(res){
                    console.log(res);

                }
            });
        });

您现在可以在控制台中看到结果。

使用success函数以您希望的方式处理结果。


5
2017-07-17 14:14