繁体   English   中英

通过FQL获取用户喜欢的流项目(帖子,评论,图片,链接等)

[英]Getting user likes of stream items via FQL (posts, comments, pictures, links, etc)

我需要帮助通过FQL获取用户喜欢的流项目 我有一些喜欢回来,但无法弄清楚如何获得其他人。 对于access_token, 授予每个权限


让我告诉你我能做什么:

网页 Feed中我喜欢的帖子:

fql?q=Select post_id, source_id, message FROM stream where source_id in (SELECT target_id FROM connection WHERE source_id=me() and is_following=1) AND likes.user_likes=1 LIMIT 10注意: 这个工作截至2011年12月中旬时原始问题已发布。 现在(2012年2月中旬),它不再返回页面中任何喜欢的流内容。

帖子我喜欢我发布的帖子

fql?q=Select post_id, source_id, message FROM stream where source_id=me() AND likes.user_likes=1 LIMIT 10


这就是我所缺少的

我喜欢在朋友的墙上发帖:

fql?q=Select post_id, source_id, message FROM stream where source_id in (SELECT uid1 FROM friend WHERE uid2=me()) AND likes.user_likes=1 & LIMIT 5000

我喜欢在活动的墙上发帖:

????

团体的墙上我喜欢的帖子:

????

以下是我发布的内容(截至发稿时间为10-22-2012):

对于朋友/订阅/页面项目:

SELECT likes, post_id, actor_id, target_id, message
FROM stream
WHERE source_id IN (SELECT target_id FROM connection WHERE source_id=me())
AND likes.user_likes=1 

要么

从'喜欢'表:

SELECT user_id, object_id, post_id
FROM like
WHERE user_id=me()

但是post_id总是为null,并且有时在通过图形api查询时不存在object_id (即graph.facebook.com/OBJECT_ID

对于链接/外部对象 - 没有直接的方法来获取Facebook帖子的详细信息,但它返回了很多结果。 也许使用另一个查询/多查询在链接表中查找这些URL。

SELECT url
FROM url_like
WHERE user_id=me()

我找到了使用Open Graph API的解决方案。 希望这对你也有帮助吗?

要执行此操作,您需要用户read_stream权限。

如果我的解决方案符合您的要求,请告诉我。

因为FQL不会比V2.0更长,所以我更喜欢使用Open Graph API而不是FQL。

/*
*
*   Count my_user_id likes in wall of user "123"
*
*   ex: url = /123/posts
*   
*   setTimeout to avoid exceed api level rate limit, code 613
*/

function findMyLikes(url,my_user_id,count,callback) {
    console.log(url);
    FB.api(url, function (response) {
        if (response.data) {
            response.data.forEach(function (post) {
                //console.log(post);
                if (post.likes) {
                    post.likes.data.forEach(function (like) {
                        if (like.id == my_user_id) {
                            count++;
                        }
                    });
                }
            });
        }

        if (response.paging && response.paging.next) {
            setTimeout(function() {findMyLikes(response.paging.next,my_user_id,count,callback)},1000);
        } else {
            callback(count);
        }
    });

};

我注意到这个解决方案可能需要一些时间,如果你正在分析非常长的提要。 对于这个问题,我还有一个悬而未决的问题:通过较少的图形API调用获取新闻墙上特定用户的所有喜欢https://codereview.stackexchange.com/q/58270/50013?sem=2

Facebook的合作伙伴工程师@Jeff Sherlock这里'你不能使用fb平台吸引所有人的喜欢。 出于隐私原因,我们将其限制为演员,电影,运动队等。 我知道它没有多大意义,因为您可以使用Facebook API查询各种其他内容。 我建议你拍照阿什顿库彻并尝试查询他喜欢的桌子......等等,你需要他的许可; ]

问题是,like表为所有内容返回一个空白的post_id。 但是,它会为您的喜欢返回object_id。

您可以将所有这些object_id放在逗号分隔的字符串中,然后使用?ids = objectid1,objectid2,objectid3等提交图形API调用。

然后,它将返回它找到的所有对象。 通过这种方式,您可以获得流项目的喜欢。

它似乎回到了大约4周。 我似乎无法让它比这更进一步。

顺便说一句,你会发现一件事是喜欢的评论也作为object_ids返回到同一个表中。 但是,似乎没有任何方法可以找出这些object_ids的对象详细信息。 这些有点神秘。

如果您阅读了类似的表文档,则post_id字段的注释如下:

必须从流FQL表中查询这些帖子ID。

因此,当你比较post_id类的post_id<>"" ,它不会返回任何内容,因为默认结果包含空白的post_id。 当你运行以下查询时似乎:

SELECT user_id, object_id, post_id
FROM like
WHERE user_id=me()

它返回用户喜欢的页面和其他一些东西但不包括Feed帖子。

由于您已经希望从流表获得喜欢,您只想从流表中获取post_id 要获取给定日期的NewsFeed的post_id ,您可能需要尝试以下查询。

SELECT post_id
FROM stream
WHERE filter_key IN (
    SELECT filter_key
    FROM stream_filter
    WHERE uid=me()
    AND type='newsfeed'
)
AND is_hidden = 0
AND description<>''

您可能希望使用LimitCreated_time字段来获得更多。 的帖子。 一旦你在Multi-query中使用上面的查询来获得用户的喜欢,你肯定会在某一天得到喜欢。

SELECT post_id, actor_id, message, type, permalink, attachment, likes, 
    comments, description, updated_time, created_time
FROM stream 
WHERE filter_key in (
        SELECT filter_key 
        FROM stream_filter 
        WHERE uid=me() AND type='newsfeed'
)

只需根据您的要求更改类型

GraphAPI无法做到这GraphAPI GraphAPI将允许您查看用户喜欢/me/likes ,但它不会为您提供他们喜欢的发布到用户墙上的所有项目的列表。

您可以在Facebook文档中查看相关详细信息。

我没有您在问题中列出的FQL经验,但Stack Overflow问题似乎为您的问题提供了答案。

请参阅: Facebook API - “我所有的喜欢”查询

完美地完成了测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM