Desarrollo: Obtener los permisos del usuario a una aplicación vía FQL

Cuando desarrollamos una aplicación para Facebook tenemos que tener claro los permisos que necesitamos del usuario, tanto los normales como los extendidos, esto implica que debemos detectar vía código cuando usuario nos ha concedido o no un permiso. Puede suceder también que el usuario nos conceda los permisos extendidos al instalar la aplicación pero luego los revoque, con lo que esta no funcionaría bien.

¿Cómo podemos detectar si el usuario que carga la aplicación tiene esa concesión de permisos activada? Pues muy fácil, por ejemplo, con FQL. Os pongo a continuación un ejemplo con el permiso extendido manage_page. El FQL lo ejecutaremos utilizando la API de Open Graph de Facebook.

Para poder utilizar este código necesitáis una aplicación instalada en Facebook, la librería de Facebook en vuestro servidor, un servidor que ejecute PHP y conocimientos avanzados de PHP.

require_once(“../facebook/src/facebook.php”);    // Librería de Facebook PHP

$app_id = ‘————–‘;  // El id de tu app
$app_secret = ‘———————-‘;  // La clave de tu app

$facebook = new Facebook(array(

   ‘appId’ => $app_id,

   ‘secret’ => $app_secret,
));

$user = $facebook->getUser();

function gfile_get_contents($url){
   $curl = curl_init();
   curl_setopt($curl, CURLOPT_URL, $url);
   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 160);
   curl_setopt($curl, CURLOPT_TIMEOUT, 160);

   $result = curl_exec ($curl);

   curl_close ($curl);

return $result;
}

// Detectar permisos
$fql_query_url = ‘https://graph.facebook.com/fql/?q=SELECT+manage_pages+FROM+permissions+WHERE+uid=’. $user
. ‘&’ . $access_token;
$fql_query_result = gfile_get_contents($fql_query_url);
$fql_query_obj2 = json_decode(preg_replace(‘/:(\d+)/’, ‘:”${1}”‘, $fql_query_result),true);

$bPermisos = false;

foreach($fql_query_obj2[“data”] as $datos){
   if($datos[‘manage_pages’]==1){
        $bPermisos = true;
   }
}

if($bPermisos==false){
   echo(“No tienes el permiso manage_pages activado”); 
}else{

   echo(“Tienes el permiso manage_pages activado”); 

}

// — fin del detector de permisos — //

Espero que os sea de utilidad 🙂

4 comentarios sobre “Desarrollo: Obtener los permisos del usuario a una aplicación vía FQL

  • el 9 Febrero, 2012 a las 6:32 pm
    Permalink

    Hola primero muy bueno tu post y tu blog es de gran aporte lo siguiente estaba probando esto y me sale este error:

    Parse error: syntax error, unexpected ‘:’ in /home/vivept/public_html/appfb/index.php on line 31

    $fql_query_url = ‘https://graph.facebook.com/fql/?q=SELECT+manage_pages+FROM+permissions+WHERE+uid=’. $user

    esa seria la linea 31 de mi codigo si me das una manito te lo agradeceria 😀 saludos desde bolivia 😀

    Respuesta
  • el 9 Febrero, 2012 a las 6:36 pm
    Permalink

    mejor te mando todo mi codigo por q creo q algo escribi mal 😀

    $app_id,

    ’secret’ => $app_secret,
    ));

    $user = $facebook->getUser();

    function gfile_get_contents($url){
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 160);
    curl_setopt($curl, CURLOPT_TIMEOUT, 160);

    $result = curl_exec ($curl);

    curl_close ($curl);

    return $result;
    }

    // Detectar permisos
    $fql_query_url = ‘https://graph.facebook.com/fql/?q=SELECT+manage_pages+FROM+permissions+WHERE+uid=’. $user
    . ‘&’ . $access_token;
    $fql_query_result = gfile_get_contents($fql_query_url);
    $fql_query_obj2 = json_decode(preg_replace(‘/:(d+)/’, ‘:”${1}”‘, $fql_query_result),true);

    $bPermisos = false;

    foreach($fql_query_obj2[“data”] as $datos){
    if($datos[‘manage_pages’]==1){
    $bPermisos = true;
    }
    }

    if($bPermisos==false){
    echo(“No tienes el permiso manage_pages activado”);
    }else{

    echo(“Tienes el permiso manage_pages activado”);

    }

    // — fin del detector de permisos — //
    ?php>

    Respuesta
  • el 8 Junio, 2012 a las 3:37 am
    Permalink

    excelente … Como se puede hacer para pedir permisos desde una fan page (autenticar al usuario en una pagina facebook) .

    Atte. Luis desde Perù

    Respuesta
  • el 22 Junio, 2012 a las 11:57 am
    Permalink

    Buenos días,

    Tengo una consulta por que ya no se que hacer,

    Tengo una app de facebook, que publica en el muro de los usuarios.

    pero mi problema es que cuando el usuario instala la app, y acepta los permisos,

    hago un direccionamiento a una nueva pestaña mostrando la información.

    El problema es que cuando el usuario vuelve a la pestaña de facebook, sigue la ventana popup de la aplicación solicitando que el usuario vuelva a instalar la app.

    el usuario ya tiene instalada la app, con que no debería de salir ese mensaje.

    por otra parte si el usuario vuelve a aceptar que la vuelva a instalar, sale un mensaje de que el usuario ya tiene instalada la app.

    me gustaría que si alguien me pudiera ayudar.

    Un saludo

    Respuesta

Deja un comentario

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

Sígueme