2011-02-02 21 views
14

¿Cómo puedo obtener un detalle de amistad para dos personas? Entonces, por ejemplo, en la web será:¿Cómo puedo obtener detalles de amistad en Facebook Graph API?

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

¿Hay alguna forma de que pueda hacer esto en Graph API? Además, ¿puedo obtener elementos específicos como fotos juntas, publicaciones en el muro entre nosotros, etc.? (No se documentó AFAIK, pero muchas funciones de Graph API no son de todos modos ...)

EDITAR: Creo que debería ser posible con Graph API. Por ejemplo, obtener detalles de la familia (hermano, hermana, padres, etc.) aún no está documentado, aún puedo hacerlo.

+0

He estado mirando por encima de la API gráfica, y no pudo encontrar nada en la página de la amistad en absoluto en la documentación. duplicado posible de [esta cuestión] [1] [1]: http://stackoverflow.com/questions/4865903/can-you-view-a-friendship-relationships-data- the-you-and-a-friend-page-via-t – Nemo

+0

Sí, de hecho parece una pregunta similar a eso. ¿Cómo podemos decidir cuál cerrar? Podemos fusionar? –

+0

Tienes razón, duplicado. He votado para fusionar mi pregunta en esta. (Necesita más votos para que realmente suceda, sin embargo). – bantic

Respuesta

6

Puede simular una consulta de amistad haciendo múltiples consultas FQL. Por ejemplo, para obtener todas las fotos entre dos amigos de A y B, se puede:

  1. Recibe todas las fotos (p) de la A
  2. Obtener todas las etiquetas de B en p (consulta en la tabla photo_tags)
  3. Obtener todos los comentarios hechos por B en la p (consulta en la tabla comentarios)

de repetición, esta vez seleccionando fotos de B.

se puede aplicar el mismo concepto en otras cosas tales como postes, gustos , videos, etc.

+0

¿Hay alguna forma de no FQL para hacer esto? –

3

Sí, creo que también se puede hacer la misma cosa phillee respondió con la API de gráficos en lugar de FQL: fotos

  1. Get del usuario https://graph.facebook.com/USERID/photos
  2. Obtener etiquetas de cada foto https://graph.facebook.com/PHOTOID/tags
  3. Ordenar a través de la lista de etiquetas de fotos, y tomar todas las fotos con el amigo en ellas
  4. Obtener los comentarios de cada foto https://graph.facebook.com/PHOTOID/comments
  5. Ordena por el lista de los comentarios de las fotos, y apoderarse de todos los comentarios que dejan el amigo
  6. Como también se dijo que la otra respuesta: aclarar y repetir para todos los datos que desea
    1. https://graph.facebook.com/USERID/feed
    2. https://graph.facebook.com/USERID/posts
    3. , etc, etc, ver todas las conexiones aquí: http://developers.facebook.com/docs/reference/api/user/

por los intereses, películas, actividades, etc simplemente hacer una llamada de API para ambos (012.y https://graph.facebook.com/OTHERUSER/music) y encontrar la intersección de los dos conjuntos de datos (bucle a través de cada lista y guardar todos los partidos a una lista separada de gustos mutuos)

No hay llamadas a la API específicas para las amistades, sin embargo, por lo que se tienes que construir el tuyo Supongo que Facebook está haciendo exactamente esto en sus páginas de Amistad :)

Debería ser tan fácil con FQL como con la API REST ...tal vez incluso más fácil con FQL ya que puede agregar DONDE las condiciones y recuperar solo los datos que necesita (SELECT * FROM comments WHERE fromid = FRIENDID), en lugar de ordenar la lista grande devuelta por la API (a menos que haya una forma de agregar condiciones a las URL de solicitud de API).

+0

Con Graph API, harías una consulta separada sobre etiquetas y comentarios para cada objeto, lo que podría ser prohibitivamente costoso. Con FQL puede usar una subconsulta para que pueda ejecutar una consulta por tipo de objeto que desee. – phillee

+0

Sí, probablemente tengas razón, haría esto con FQL – thaddeusmt

0

Si entiendo correctamente usted quiere "Amistad"

Este tipo de consulta no es directamente posible utilizando el API de gráficos (por el momento). Usted tendría que recopilar la información de cada criterio de valoración de recursos y luego hacer algunas relacionadas en su propia parte para "Amistad"

0

Esto es lo que he estado usando:

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

llamada main()!

+0

Una nota aquí: esta solo enumera a todos tus amigos. :-) – Bondt

0

conseguir las fotos donde dos (o más) usuarios etiquetados en:

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) 
     ... 
Cuestiones relacionadas