【问题标题】:Getting friends' facebook check-ins into a place让朋友的 Facebook 签到到一个地方
【发布时间】:2013-04-23 15:45:18
【问题描述】:

我正在尝试找出我的哪些朋友以前去过Paris。我正在尝试使用 Graph API 来执行此操作。

所以基本上有地点 id(对于巴黎,它是 110774245616525),我可以使用端点 https://graph.facebook.com/110774245616525/ 来获取基本信息。然后,我获得了一个具有friends_status 和user_status 权限的access_token(使用Graph Explorer),并且我正在使用这个访问令牌来获取签到。所以我正在打一个 GET https://graph.facebook.com/110774245616525/checkins?access_token=my_access_token 电话,我得到的只是这个错误消息:

page_id 不是签入表的成员

虽然,阅读the documentation 我看到了与签到的联系:

当前用户及其朋友在此地方页面上的签到 当前用户。

这是 Graph API 的错误还是我的处理方式错误?

谢谢!

【问题讨论】:

    标签: facebook facebook-graph-api facebook-checkins


    【解决方案1】:

    在 7 月版本 https://developers.facebook.com/roadmap/ 中有一个重大更改,其中提到将 page_id 重命名为 target_id,因此这可能是导致它的原因。但是,以下 fql 查询可能是您的起点

       select author_uid from checkin where target_id = 110774245616525
    

    author_uid 应该是签到的人https://developers.facebook.com/docs/reference/fql/checkin

    【讨论】:

    • 是的,但这不是我想要做的,因为假设我有 300 个朋友,我将不得不做 300 个请求。我几乎只是想在巴黎页面上制作访问过法国巴黎的朋友框。
    • 为什么要处理 300 个请求?据我所知,正在选择所有已入住巴黎的人,巴黎是 where 子句中的 target_id。它返回 author_uid,这是您朋友的 uid。我不是告诉你用实际数字替换它。只需在开发者工具中尝试查询,看看它是否有效
    • 我试过了,它只返回一个朋友。这有什么原因吗?知道它应该返回大约 400 个条目。
    • hmm 试试 select name from user where uid in (select author_uid from checkin where target_id = 110774245616525)
    • 我尝试添加 limit 100,但结果相同。当我试图找到从这里发表任何东西的人时,也许它是唯一一个真正在巴黎检查过的人。
    【解决方案2】:

    我使用以下 fql 来显示在特定位置签到的所有朋友的姓名。只在 Graph API Explorer 中尝试过,而且速度相当慢:/ 让我知道它是否有帮助 :)
    Select name from user where uid in (Select author_uid from checkin where author_uid in (select uid2 from friend where uid1=me()) and target_id=110774245616525

    附加说明:我注意到我的许多朋友都出现在“访问过法国巴黎的朋友”框中,但他们没有任何实际签到。我认为该框还会检查您的朋友是否有任何来自巴黎的照片。只是一个想法

    【讨论】:

    • 我实际上对这个请求有相同的结果:select author_uid from checkin where target_id = 110774245616525
    • 您的请求正在获取名称,但我不需要它,它实际上获取了我的朋友 id,这不是必需的,因为 facebook 无论如何都将它限制为我的朋友
    • 可能不得不改用 location_post。
    【解决方案3】:

    在 asifrc 和 TommyBs 的帮助下,我找到了一种使用此查询在 FQL 中执行此操作的方法:

    SELECT name 
      FROM user 
     WHERE uid IN (
           SELECT author_uid 
             FROM location_post 
            WHERE distance(latitude, longitude, "48.856614", "2.3522219") < 5000 
              AND author_uid IN (SELECT uid2 FROM friend WHERE uid1=me()))
    

    这几乎是让我所有的朋友,搜索他们在巴黎市中心附近的所有帖子,然后得到他们的名字。

    如果有人知道如何在 Graph API 中执行此操作,请告诉我,因为我认为依赖 FQL 仍然不是一个好主意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多