2011-02-02 6 views
14

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

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

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

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

+0

Я просматривал графа апи, и не мог найти что-либо на странице дружбы вообще в документации. Возможный дубликат [этот вопрос] [1] [1]: http://stackoverflow.com/questions/4865903/can-you-view-a-friendship-relationships-data- a-you-and-a-friend-page-via-t – Nemo

+0

Да, на самом деле это похоже на аналогичный вопрос. Как мы можем решить, какой из них закрыть? Можем ли мы объединиться? –

+0

Вы правы, дублируете. Я голосовал, чтобы объединить мой вопрос в этот. (Нужно больше голосов, чтобы на самом деле произойти.) – bantic

ответ

6

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

  1. Получить все фотографии (р) от
  2. Получить все теги B в р (запрос по таблице photo_tags)
  3. Получить все комментарии B на стр (запрос по таблице комментариев)

Повторите это время выбора фотографий из B.

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

+0

Есть ли способ не-FQL для этого? –

3

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

  1. Получить пользователя https://graph.facebook.com/USERID/photos
  2. Получить теги каждой фотографии https://graph.facebook.com/PHOTOID/tags
  3. Сортировка по списку фотогалереи и захватить все фотографии с помощью Друга в них
  4. Получить комментарии всех фотографий https://graph.facebook.com/PHOTOID/comments
  5. Сортировка по Список комментариев фото и захватить все комментарии оставленные другу
  6. Как другой ответ также сказал: прополоскать и повторить для всех данных, которые вы хотите
    1. https://graph.facebook.com/USERID/feed
    2. https://graph.facebook.com/USERID/posts
    3. и т.д. и т.п., увидеть все соединения здесь: 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?).

+0

С помощью Graph API вы будете делать отдельный запрос по тегам и комментариям для каждого объекта, что может быть непомерно дорогостоящим. С помощью FQL вы можете использовать подзапрос, чтобы вы могли запускать один запрос для каждого типа объекта, который вы хотите. – phillee

+0

Да, вы, вероятно, правы, я бы сделал это с помощью FQL – thaddeusmt

0

Если я правильно понимаю, что вы хотите «Просмотр Дружба»

Этот тип запроса не непосредственно возможно с помощью API Graph (на данный момент). Вы должны собрать информацию от каждой конечной точки ресурсов, а затем сделать некоторые относящиеся на собственной части, чтобы «Дружба» Посмотреть

0

Это то, что я использую:

<?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); 
} 
?> 

Вызов основной (!)

+0

Примечание: здесь перечислены все ваши друзья. :-) – Bondt

0

Получение фотографий, где два (или больше) пользователей Меткой в:

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) 
     ... 
Смежные вопросы