使用Graph API检索Facebook帖子评论

时间:2011-01-25 09:47:23

标签: facebook facebook-graph-api

我尝试使用以下方式获取Facebook评论:

http://graph.facebook.com/[post_id]/comments

只有15条评论中的2条,且没有count信息。

{
    "data": [
        {
            "id": "[post_id]",
            "from": {
                "name": "[name]",
                "id": "[id]"
             },
             "message": "[message]",
             "created_time": "2011-01-23T02:36:23+0000"
        },
        {
             "id": "[id]",
             "from": {
             "name": "[name]",
                 "id": "[id]"
             },
            "message": "[message]",
            "created_time": "2011-01-23T05:16:56+0000"
        }
    ]
}

任何人都知道为什么只有2条评论?

此外,我想检索评论(默认号码)或使用我的限制号检索评论,并获取其评论数。任何的想法? (请使用Graph API)。

10 个答案:

答案 0 :(得分:38)

您需要通过安全请求https调用它并提供access_token

https://graph.facebook.com/19292868552_118464504835613/comments?access_token=XXX

修改
添加了post文档中的对象。尝试点击comments连接,然后移除access_token并尝试查看差异。

答案 1 :(得分:4)

为了获得Like计数和comment计数,您需要使用PostOwnerIDPostID的组合,而不仅仅是PostID

因此,对于您的示例,它将是:

https://graph.facebook.com/153125724720582_184234384932460/comments

同样,正如其他一些答案所述,您需要使用https方法和auth_token

答案 2 :(得分:3)

我在评论方面遇到了同样的问题。问题是我正在为测试用户使用访问令牌。由于测试用户无权访问其他FB用户信息,因此仅显示来自页面的评论。

答案 3 :(得分:2)

乌尔都语中有一个词JUGAAR意味着找到出路,只是为了完成工作。所以出于同样的目的我制作了这个JUGAAR,我希望它有所帮助。

$contents = file_get_contents("http://graph.facebook.com/" . $_GET['id'] . "/likes");
if (substr_count($contents, 'name')>0) {
    echo substr_count($contents, 'name') . " people like this album";
}

顺便说一句,我也是这个Fb的新手,我正在寻找帮助发表评论。当我尝试使用graph.api./id/comments?access_token=sdfsfsdf&message="D“时,它仍会返回id的注释而不是发布。

答案 4 :(得分:1)

作为完整性检查,您是否拥有“read_stream”权限?我可以看到使用“read_stream”的访问令牌的完整注释。正如其他人所提到的,你也必须使用https和访问令牌......

答案 5 :(得分:0)

尝试通过App Login(http://developers.facebook.com/docs/authentication)进行身份验证,然后使用access_token prarameter调用GraphAPI。

答案 6 :(得分:0)

你可以这样做,以避免整个评论问题:

  1. 获取对象的a post is considered an object in the Graph API)ID - 我从您的问题中了解到,您已经拥有它?
  2. 使用此ID创建Comments Social Plugin,并获取其代码。
  3. 将代码嵌入您的网站。
  4. 这将导致该对象的所有注释。

    要获得每个对象的评论计数,您可以执行fql query,如下所示:

    SELECT comments FROM stream WHERE post_id = [yourpostid]

    这将在计数参数下的评论数组中返回此对象的计数数。

答案 7 :(得分:0)

SELECT FROM FROM FROM WHERE post_id = [yourpostid]在这种情况下不起作用..

成功调用图形以在用户的​​墙上发布(使用应用程序的access_token)后返回的id的格式为abcdef_qwerty(下划线分隔的id) 在注释表的post_id中映射的post id的形式为“lmnop”..

获取类似的评论和评论这个帖子的形式“abcdef_qwerty”使用app生成的访问令牌进行图形调用似乎是唯一的解决方案..

像这样的东西: https://graph.facebook.com/100002619172565_117323155031656?access_token=xxxxxxxxxxxxx

答案 8 :(得分:0)

  

只有15条评论中的2条

向网址添加限制参数:

 http://graph.facebook.com/[post_id]/comments?limit=1000

这应该显示所有评论。

答案 9 :(得分:0)

成功登录后调用此方法facebookComments()

parameters.putString(“fields”,“message”); ............. //重要

 AccessToken accessToken = AccessToken.getCurrentAccessToken();
    public void facebookComments() {
        try {
            getFriends(accessToken, new GraphRequest.Callback() {
                        public void onCompleted(GraphResponse response) {
                            Log.e("keshav", "one" + response);
                            CommonMethod.showAlert("res  --> " + response, MainActivity.this);
                        }
                    }
            );
        } catch (Exception e) {
            CommonMethod.showAlert("Exception is -> " + e, MainActivity.this);
        }
    }

    public void getFriends(AccessToken token, GraphRequest.Callback callback)
    {
        // TODO Comments Working but id return only
        GraphRequest requestt = new GraphRequest(token, "744511125731315_751199848395776/comments",
                null, HttpMethod.GET, callback);
        Bundle parameters = new Bundle();
        parameters.putString("fields", "id");           // todo in use imp
        parameters.putString("fields", "name");           // todo in use imp
        parameters.putString("fields", "from");           // todo in use imp
        parameters.putString("fields", "message");           // todo in use imp
        requestt.setParameters(parameters);
        requestt.executeAsync();
    }