Как я могу получить информацию о дружбе в Facebook Graph API?

Как я могу получить деталь дружбы для двух человек? Так, например, в Интернете это будет:

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

Есть ли способ сделать это в Graph API? Кроме того, я могу получить конкретные элементы, такие как фотографии вместе, настенные сообщения между нами и т.д.? (Не задокументировано AFAIK, но многие функции API Графика в любом случае не...)

EDIT: Я думаю, что это возможно с помощью Graph API. Например, получение сведений о семье (брат, сестра, родители и т.д.) Еще не задокументировано, но я все еще могу это сделать.

Ответы

Ответ 1

Вы можете имитировать запрос дружбы, выполняя несколько запросов FQL. Например, чтобы получить все фотографии между двумя друзьями A и B, вы можете:

  • Получить все фотографии (p) от A
  • Получить все теги B в p (запрос в таблице photo_tags)
  • Получить все комментарии, сделанные B по p (запрос в таблице комментариев)

Повторите, на этот раз выбрав фотографии из B.

Вы можете применить ту же концепцию к другим вещам, таким как сообщения, симпатии, видео и т.д.

Ответ 2

Да, я думаю, что вы также можете сделать то же самое phillee, на которое отвечает API-интерфейс Graph вместо FQL:

  • Получить фотографии пользователя https://graph.facebook.com/USERID/photos
  • Получить все теги фотографий https://graph.facebook.com/PHOTOID/tags
  • Сортировка списка меток фотографий и захват всех фотографий с помощью Друга в них
  • Получить комментарии к фотографиям https://graph.facebook.com/PHOTOID/comments
  • Сортировка списка комментариев к фотографии и захват всех комментариев, оставленных другом
  • В качестве другого ответа также говорилось: полоскание и повторение для всех данных, которые вы хотите,
    • https://graph.facebook.com/USERID/feed
    • https://graph.facebook.com/USERID/posts
    • и т.д., см. все соединения здесь: http://developers.facebook.com/docs/reference/api/user/

Для интересов, фильмов, действий и т.д. просто вызовите API для обоих (https://graph.facebook.com/ONEUSER/music и https://graph.facebook.com/OTHERUSER/music) и найдите пересечение двух наборов данных (проведите цикл по каждому списку и сохраните все совпадения в отдельном список взаимных впечатлений)

Нет никаких специальных вызовов API для дружбы, поэтому вам придется создавать свои собственные. Я предполагаю, что Facebook делает именно это на своих страницах Дружбы:)

С FQL должно быть так же легко, как с REST API... может быть, даже проще с FQL, так как вы можете добавить условия WHERE и вернуть только нужные вам данные (SELECT * FROM comments WHERE fromid = FRIENDID), вместо того, чтобы сортировать по большому список, возвращаемый API (если есть способ добавить условия к URL-адресам API-адреса?).

Ответ 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)
      ...