Conectar con Facebook (Graph API)

En este post conectaremos utilizando el Graph API que nos proporciona Facebook.

En el post anterior vimos como conectar nuestra aplicación con Facebook usando el php SDK de github, ahora vamos a conectarnos y a solicitar los permisos que necesitemos sin github.

Como en el post anterior necesitaremos los datos de nuestra aplicación, por ejemplo:

$app_id = “1679789463367854″;
$app_secret = “c1d64bf5ag6h76989269794a590a2ba31″;

Esta variable la utilizaremos para redireccionar la aplicación en caso de obtener los permisos.
$urlAplicacion= “http://apps.facebook.com/super_horoscopo/index.php”;

Para esto vamos a usar el access token del usuario que Facebook nos proporciona, por consiguiente tienes que tener activada el protocolo OAuth 2.0 en las características de tu aplicación.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
	$app_id = "16797893367854";
         $app_secret = "c2d64bf5ag6h76989269794a5a902ba39";
 
        $urlAplicacion = "http://apps.facebook.com/super_horoscopo/index.php";
 
      // Utilizamos la variable 'code' para saber si tenemos session    
        	  session_start();
   $code = $_REQUEST["code"];
 
   if(empty($code)) {            
       $dialog_url= "http://www.facebook.com/dialog/oauth?client_id="
.$app_id."&redirect_uri=".urlencode($urlAplicacion)."&scope=publish_stream";   
         // La variable scope contendrá los permisos que necesitamos.
            echo("<script>top.location.href='".$dialog_url."'</script>");
            die();
        }else{
    //Recuperamos el access token para utilizarlo con los permisos.
 $token_url="https://graph.facebook.com/oauth/access_token?client_id="
.$app_id."&client_secret=".$app_secret."&redirect_uri="
.urlencode($urlAplicacion)."&code=".$code;
 
   $response = file_get_contents($token_url);
   $params = null;
   parse_str($response, $params);
   $access_token = $params['access_token'];

Este es el ejemplo que está en facebook developer el cual hemos adaptado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
   $app_id = "YOUR_APP_ID";
   $app_secret = "YOUR_APP_SECRET";
   $my_url = "YOUR_URL";
 
   session_start();
   $code = $_REQUEST["code"];
 
   if(empty($code)) {
     $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
     $dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" 
       . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state="
       . $_SESSION['state'];
 
     echo("<script> top.location.href='" . $dialog_url . "'</script>");
   }
 
   if($_REQUEST['state'] == $_SESSION['state']) {
     $token_url = "https://graph.facebook.com/oauth/access_token?"
       . "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url)
       . "&client_secret=" . $app_secret . "&code=" . $code;
 
     $response = file_get_contents($token_url);
     $params = null;
     parse_str($response, $params);
 
     $graph_url = "https://graph.facebook.com/me?access_token=" 
       . $params['access_token'];
 
     $user = json_decode(file_get_contents($graph_url));
     echo("Hello " . $user->name);
   }
   else {
     echo("The state does not match. You may be a victim of CSRF.");
   }

Artículos relacionados