Как я могу получить информацию о дружбе в 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)
...
Ответ 6
http://bighnarajsahu.blogspot.in/2013/03/facebook-graph-api-to-get-user-details.html
Это полный код, чтобы получить список друзей в Fb.