【问题标题】:How to get public wall posts with the facebook API如何使用 facebook API 获取公共墙贴
【发布时间】:2013-03-15 05:24:52
【问题描述】:

我正在尝试从个人资料 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

当我尝试使用提要时,我看不到我想要的帖子。

如果我请求帖子 graph.facebook.com/529628444/posts?limit=100&access_token=TOKEN 我可以看到所有内容(链接、照片等),除了那些该死的帖子!

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

编辑

【问题讨论】:

  • 不确定为什么当您没有有效令牌时此页面会显示“不支持的获取请求错误”。我已经使用有效的用户和应用程序访问令牌进行了尝试,并且已经能够获取数据。如果我尝试不使用令牌或使用过期令牌,则会收到不受支持的 get 请求错误,而不是正确的错误。
  • 查看我的answer/question。没有比这更简单的了。

标签: facebook api facebook-graph-api token facebook-wall


【解决方案1】:

编辑

此答案是在 Graph API 版本处于其第一个版本时写回的。那时您可以通过使用用户 ID 获取用户提要,现在用户 ID 不再在应用程序之间共享。 facebook 还创建了一个 new API,它只对它的一些合作伙伴开放。

因此,除非用户使用过您的应用,否则您目前无法获得公开的用户供稿。不过,您仍然可以获取 Pages 供稿。

旧版

此答案适用于 graph api v1

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

如果您只想查询公共数据,您可以通过以下方式创建 APP Token:

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

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

【讨论】:

  • 您能否以facebook.com/aurelia.filion 墙帖为例更详细地解释如何从公共墙帖中获取数据。我不确定如何实施您所描述的内容。谢谢!
  • 不再适用于新的 Facebook API 定义。
【解决方案2】:

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

无论如何,我将展示我是如何设法从公共用户那里获取供稿的:

        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) 并注册一个新的网络应用程序。只需继续顶部导航中的“我的应用程序”,然后继续“添加新应用程序”。完成后,您可以访问您的 App ID 和您的 APP Secret。

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

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

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

第二个链接是访问提要(我们这里没有添加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函数以你想要的方式处理结果。

【讨论】:

  • 效果很好,除了查找 ID 的工具,这个对我有用 - findmyfbid.in
猜你喜欢
  • 2013-03-16
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 2013-01-27
  • 2012-04-03
  • 1970-01-01
  • 2012-06-19
  • 1970-01-01
相关资源
最近更新 更多