【问题标题】:How can I get friendship details in Facebook Graph API?如何在 Facebook Graph API 中获取友谊详情?
【发布时间】:2011-02-02 11:39:11
【问题描述】:

如何获取两个人的友谊详情?因此,例如在网络中它将是:

http://www.facebook.com/<my_id>?and=<friend_id>

有什么方法可以在 Graph API 中做到这一点?此外,我能否获得特定项目,例如合影、我们之间的墙贴等? (没有记录 AFAIK,但许多 Graph API 功能无论如何都没有......)

编辑:我认为 Graph API 应该可以。例如,获取家庭详细信息(兄弟、姐妹、父母等)没有记录,但我仍然可以这样做。

【问题讨论】:

  • 我一直在查看graph api,在文档中的友谊页面上根本找不到任何东西。 [this question][1] [1] 的可能重复项:stackoverflow.com/questions/4865903/…
  • 是的,它实际上看起来像一个类似的问题。我们如何决定关闭哪一个?我们可以合并吗?
  • 你是对的,重复。我投票将我的问题合并到这个问题中。 (不过需要更多投票才能真正实现。)
  • 我也不能投票,所以必须有人投票。

标签: facebook facebook-graph-api


【解决方案1】:

您可以通过执行多个 FQL 查询来模拟友谊查询。例如,要获取两个朋友 A 和 B 之间的所有照片,您可以:

  1. 从 A 获取所有照片 (p)
  2. 获取p中B的所有标签(在photo_tags表上查询)
  3. 获取 B 在 p 上创建的所有 cmets(在 cmets 表上查询)

重复,这次从 B 中选择照片。

您可以将相同的概念应用于其他内容,例如帖子、喜欢、视频等。

【讨论】:

  • 是否有非 FQL 方法可以做到这一点?
【解决方案2】:

是的,我认为您也可以用 Graph API 而不是 FQL 回答 phillee 做同样的事情:

  1. 获取用户照片https://graph.facebook.com/USERID/photos
  2. 获取每张照片的标签https://graph.facebook.com/PHOTOID/tags
  3. 对照片标签列表进行排序,并抓取所有包含好友的照片
  4. 获取每张照片的cmetshttps://graph.facebook.com/PHOTOID/comments
  5. 对照片cmets列表进行排序,抓取好友留下的所有cmets
  6. 正如另一个答案所说:冲洗并重复您想要的所有数据
    1. https://graph.facebook.com/USERID/feed
    2. https://graph.facebook.com/USERID/posts
    3. 等等,在这里查看所有连接:http://developers.facebook.com/docs/reference/api/user/

对于兴趣、电影、活动等,只需对两者(https://graph.facebook.com/ONEUSER/musichttps://graph.facebook.com/OTHERUSER/music)进行 API 调用并找到两组数据的交集(遍历每个列表并将所有匹配项保存到单独的相互喜欢的列表)

不过,没有针对友谊的特定 API 调用,因此您必须自己构建。我的猜测是 Facebook 在他们的友谊页面上就是这样做的 :)

使用 FQL 应该和使用 REST API 一样简单...使用 FQL 可能更容易,因为您可以添加 WHERE 条件并只取回您需要的数据 (SELECT * FROM comments WHERE fromid = FRIENDID),而不是对大数据进行排序API 返回的列表(除非有办法向 API 请求 URL 添加条件?)。

【讨论】:

  • 使用 Graph API,您将对每个对象的标签和 cmets 进行单独查询,这可能会非常昂贵。使用 FQL,您可以使用子查询,这样您就可以针对所需的每种对象运行一个查询。
【解决方案3】:

如果我理解正确你想“查看友谊”

这种类型的查询不能直接使用 Graph API(目前)。您需要从每个资源端点收集信息,然后自己做一些与“查看友谊”相关的事情

【讨论】:

    【解决方案4】:

    这是我一直在使用的:

    <?php
    function main()
    {
        global $Fb;
        $Fb = new Facebook(array('appId'=>FB_API_ID,'secret'=>FB_API_SECRET));
        $logoutUrl = $Fb->getLogoutUrl();
        $loginUrl = $Fb->getLoginUrl();
        $user = fb_loguser($Fb);
        if ($user)
        {
            $txt .= "<p align=\"center\"><a href=\"" . $logoutUrl . "\">Logout</a></p>";
            $txt .= "<h3 align=\"center\">You</h3>";
            $access_token = $Fb->getAccessToken();
            $user_profile = $Fb->api('/me');
            $txt .= "<p align=\"center\">
                <img src=\"https://graph.facebook.com/".$user."/picture\"></p>";
            $txt .= fb_friends_list($user_profile,$access_token);
        }
    }   
    function fb_loguser($facebook)
    {
        global $Fb;
        $Fb = $facebook;
        $user = $Fb->getUser();
        if ($user) 
        {
            try
                $user_profile = $Fb->api('/me');
            catch (FacebookApiException $e) 
            {
                error_log($e);
                $user = null;
            }
        }
        return($user);
    }
    function fb_friends_list($access_token)
    {
        global $Sess,$Fb;
        $friends = $Fb->api('/me/friends'); // return an array [data][0 to n][name]/[id]
        $siz = sizeof($friends['data']);
        $txt  = "<h3>Your FRIENDS on FACEBOOK</h3>";
        $txt .= "<table>";
        for ($i=0; $i<$siz; $i++)
        {
            $fid = $friends['data'][$i]['id'];
            $src = "http://graph.facebook.com/".$fid."/picture";
            $txt .= "<tr><td><img src=\"".$src."\" /></td>";
            $txt .= "<td>".$friends['data'][$i]['name'] . "</td>";
            $txt .= "<td>" . $fid . "</td></tr>";   
        }
        $txt .= "</table>";
        return($txt);
    }
    ?>
    

    调用 main()!

    【讨论】:

    • 请注意:这只是列出了你所有的朋友。 :-)
    【解决方案5】:

    获取标记了两个(或更多)用户的照片:

    SELECT pid, src_big FROM photo 
        WHERE pid IN(
              SELECT pid FROM photo_tag WHERE subject=me()) 
          AND pid IN(
              SELECT pid FROM photo_tag WHERE subject=FRIEND_ID)
          AND pid IN(
              SELECT pid FROM photo_tag WHERE subject=ANOTHER_FRIEND_ID)
          ...
    

    【讨论】:

      【解决方案6】:

      【讨论】:

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