En este post describimos como conectar con Facebook una aplicación utilizando el Graph API que nos proporciona Facebook.
En el post anterior vimos como conectar nuestra aplicación con Facebook utilizando el php SDK de github, ahora vamos a conectarnos y a solicitar los permisos que necesitemos usando otra manera diferente.
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, para realizar esto 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."); } |