PHP SDK: Cómo listar a los amigos de tus usuarios que ya son usuarios de tu aplicación

Algunos de vosotros me habéis preguntado como listar los amigos de un usuario de vuestra aplicación con el nuevo PHP SDK. Tengo tan mala memoria que pensé que ya lo había contado por aquí alguna vez 🙂

Os pongo un ejemplo de como hacerlo con el nuevo PHP SDK y con la ayuda de FQL:

<?php 
    session_start(); 
    
    require 'fb-lib/facebook.php';

    $facebook = new Facebook(array(     'appId'  => FACEBOOK_APP_ID,
    'secret' => FACEBOOK_SECRET_KEY,
    'cookie' => true,
    'domain' => 'TUDOMINIO.com',
    'req_perms' => 'email,publish_stream,user_photos'
));

$session = $facebook->getSession();

if (!$session) {

    $url = $facebook->getLoginUrl(array(
               'canvas' => 1,
               'fbconnect' => 0,
	       'req_perms' => 'email,publish_stream,user_photos'
           ));

    echo "";

}else{

    try {

        $uid = $facebook->getUser();
        $me = $facebook->api('/me');

    } catch (FacebookApiException $e) {

	$url = $facebook->getLoginUrl(array(
		   'canvas' => 1,
		   'fbconnect' => 0,
		   'req_perms' => 'email,publish_stream,user_photos'
	   ));

	   echo "";

    }	

	$fql = "SELECT uid2 FROM friend WHERE uid1=". $uid;
	$response = $facebook->api(array(
		  'method' => 'fql.query',
		  'query' =>$fql,
		));

	$condicion = "";

	foreach($response as $dato){
		if($condicion==""){
			$condicion = " WHERE uid=". $dato["uid2"];
		}else{
			$condicion .= " OR uid=". $dato["uid2"];
		}
	}

	$fql = "SELECT  uid,name,pic_square,is_app_user FROM user ". $condicion ." ORDER BY name";
	$response = $facebook->api(array(
	  'method' => 'fql.query',
	  'query' =>$fql,
	));

	$ids = "";
	$nombres = "";
	$picbig = "";

	foreach($response as $dato){
		if($dato["is_app_user"]==1){
			echo($dato["uid"] ." - ". $dato["name"] ." - ". $dato["pic_square"] ."
");

		}
	}
}
?>

Obviamente tendrás que poner tu propio appId,secret y domain para que funcione . El appId y el secret los obtienes en el área de desarrolladores de Facebook. Domain es el dóminio del servidor dónde alojas las cosas.

Espero que os sea de utilidad.

11 comentarios sobre “PHP SDK: Cómo listar a los amigos de tus usuarios que ya son usuarios de tu aplicación

  • el 31 Marzo, 2011 a las 11:02 am
    Permalink

    Buenas felicidades y gracias por el blog, tienes información realmente interesante, mi duda es la siguiente:
    “require ‘fb-lib/facebook.php’; “
    en esta linea es necesario poner ‘fb-lib’? o solo con ‘facebook.php’ es suficiente?
    Tengo el facebook.php en la misma carpeta que la página con la que estoy trabajando.
    Y el codigo php va dentro de html o fuera, porque he estado viendo que para llamar a ‘facebook.php’ se tiene que hacer fuera y dentro de html> utilizar el código.
    Bueno no se si me entiendes es que estoy hecho un lio, te agradeceria mucho tu ruespuesta!.
    Saludos

    Respuesta
  • el 21 Abril, 2011 a las 6:33 pm
    Permalink

    No hace falta hacer todo eso, simplemente hace falta una única consulta FQL y mostrar el resultado deseado recogido de los datos solicitados de la consulta.

    Respuesta
  • el 27 Junio, 2011 a las 11:12 pm
    Permalink

    Ha sido realmente el ejemplo más útil que he encontrado. Muchas gracias por compartirlo

    Respuesta
  • el 29 Junio, 2011 a las 2:59 pm
    Permalink

    me da este error
    Fatal error: Call to undefined method Facebook::useCookieSupport() in /home/distrit/public_html/bacardi/includes/src/facebook.php on line 65

    Respuesta
  • el 22 Julio, 2011 a las 9:32 am
    Permalink

    y como se se haria si quiero listar los amigos que no usan la aplicacion.

    Respuesta
  • el 4 Agosto, 2011 a las 4:16 am
    Permalink

    buen dia,

    vi tu tutorial y hay una sentencia que no entiendo

    ‘req_perms’ => ‘email,publish_stream,user_photos’

    Que va como argumento en la funcion de inicio de la sesion.

    esta opcion te permite tener acceso al correo electronico , es necesario para mi aplicacion obtener el correo electronico del que se inicia,, podria ayudarme en ese aspecto.

    Respuesta
  • el 27 Septiembre, 2011 a las 8:16 pm
    Permalink

    Que buen post, me sirvio mucho, gracias 🙂

    Respuesta
  • el 31 Octubre, 2011 a las 8:31 pm
    Permalink

    buenas tardes muy bien todo me sirvio de mucho, pero tengo una duda y quisiera ayuda por favor, bueno yo solo quiero guardar los datos de session del usuario pero en mi base datos, por favor si alguien sabe se lo agradeceria

    gracias

    Respuesta
  • el 3 Mayo, 2012 a las 5:13 am
    Permalink

    El código no hace nada en la función: $url = $facebook->getLoginUrl(array(
    ¿se debe cambiar ‘req_perms’ por ‘scope’ ?

    Respuesta

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Sígueme