【问题标题】:Getting user likes of stream items via FQL (posts, comments, pictures, links, etc)通过 FQL(帖子、评论、图片、链接等)获取用户对流项目的喜欢
【发布时间】:2011-12-13 22:14:35
【问题描述】:

我需要帮助来获得stream items via FQL 的用户喜欢。我有一些喜欢回来了,但不知道如何获得其他喜欢。对于 access_token,每个 permission is granted


让我告诉你我能做什么:

我在页面供稿上点过的帖子:

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

我在活动墙上点赞的帖子

????

我在群组的墙上点过的帖子

????

【问题讨论】:

    标签: facebook facebook-graph-api facebook-like facebook-fql


    【解决方案1】:

    截至发帖时(2012 年 10 月 22 日),这是我的想法:

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

    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 始终为空,而object_id 有时在通过图形 api 查询时不存在(即graph.facebook.com/OBJECT_ID

    对于链接/外部对象 - 没有直接的方法可以从中获取 facebook 帖子详细信息,但它会返回很多结果。也许在 streamlink 表中寻找这些 url 的另一个查询/多查询。

    SELECT url
    FROM url_like
    WHERE user_id=me()
    

    【讨论】:

      【解决方案2】:

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

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

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

      由于 V2.0 不再支持 FQL,因此我更喜欢使用 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);
              }
          });
      
      };
      

      我注意到,如果您要分析很长的提要,此解决方案可能需要一些时间。 对于这个问题,我还有一个悬而未决的问题:Get all likes from a specific user on a news wall with less graph API calls https://codereview.stackexchange.com/q/58270/50013?sem=2

      【讨论】:

        【解决方案3】:

        @Jeff Sherlock,Facebook 的合作伙伴工程师,here 说,“你不能像使用 fb 平台的人一样拉取所有喜欢的东西。出于隐私原因,我们将其限制为演员、电影、运动队等。'我知道这没有多大意义,因为您可以使用 Facebook API 查询各种其他内容。我建议你给 Ashton Kutcher 拍照并尝试在他的喜欢的桌子上查询......等等,你需要他的许可; ]

        【讨论】:

        • “我建议你给 Ashton Kutcher 拍照并尝试在他的喜欢的桌子上查询...等等,你需要他的许可”我不是在尝试查询任何人的喜欢桌子 其他 i> 比接受所有可能权限的经过身份验证的 用户的权限。我继承的这个应用程序允许用户喜欢/不喜欢 Facebook 中的流项目。它目前不存储此数据,因为他们设想 Facebook 将能够返回该数据。现在它已经交给我了,当用户通过我们的 UI 喜欢某样东西时,似乎我们必须在我们这边存储类似的东西。
        • 与 Ashton Kutcher 的建议只是有点有趣 - sry。我真正的建议是:坚持你的计划并将用户和他们的喜好存储在你的数据库中。
        • 我没有在回答中提供足够的上下文。我已经更新了答案以使其更有意义。我指的是一个人喜欢的开放图形对象。如果您访问 cnn.com 并“点赞”一篇文章,我们不会在 Graph API 的点赞端点中返回该文章。
        • 我如何通过 FQL 获得我自己喜欢的朋友的流项目(照片、帖子等)?还是我自己喜欢的事件流项目?我可以对页面的流项目获得自己的喜欢,也可以对自己的流项目获得自己的喜欢。
        【解决方案4】:

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

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

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

        这似乎是 4 周前的事了。我似乎无法让它比这更进一步。

        顺便说一句,您会发现被喜欢的 cmets 在 like 表中也作为 object_ids 返回。但是,似乎根本没有任何方法可以找出这些 object_id 的对象详细信息。这些有点神秘。

        【讨论】:

        • 啊,有趣。我将对此进行进一步研究。
        【解决方案5】:

        如果您阅读like 表文档,post_id 字段有一条注释,内容如下:

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

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

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

        它返回用户喜欢的页面和其他一些东西,但不返回提要帖子。

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

        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 字段来获得更多的否。的帖子。一旦您在多查询中使用上述查询来获得用户的喜欢,您一定会在给定的一天获得喜欢。

        【讨论】:

        • 请阅读我对 like 表的编辑不再是我的问题,因为很明显 facebook 已经删除了获取该信息的能力。请阅读我的工作示例,了解我能得到什么。事实上,我将编辑我的问题,以便更清楚地了解我需要什么,因为我的措辞并不完全正确,因为您的回答以及其他人的回答告诉我我的措辞有误。
        【解决方案6】:
        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'
        )
        

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

        【讨论】:

        • 你能告诉我,Ajit,你的查询会返回哪个点赞?
        【解决方案7】:

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

        您可以在Facebook Documentation 中查看详细信息。

        我没有使用您问题中列出的 FQL 的经验,但 Stack Overflow 问题似乎可以回答您的问题。

        见:Facebook API - "All my likes" query

        在测试中完美运行。

        【讨论】:

        • 正如我的问题所述,我可以通过使用 FQL 获得 三个 子集的喜欢(使用 Graph API 可以访问 FQL,尝试在图形 API 资源管理器中为您自己)。正如我在问题中记录的那样,我只需要获得 2 组缺失的喜欢。
        • 您是否有机会尝试实际返回喜欢的流项目的三个查询? FWIW,我已经在原始问题中记录了关于返回页面和其他对象的我/喜欢...只是不流式传输已喜欢的项目
        猜你喜欢
        • 1970-01-01
        • 2013-05-06
        • 2015-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-04
        • 1970-01-01
        相关资源
        最近更新 更多