2011-09-07 1 views
0

Dans le code ci-dessous, il y a une variable qui n'est jamais définie. Cette variable est $ access_token. Un code doit être ajouté pour obtenir un nouveau jeton d'accès afin que le programme puisse s'exécuter sans générer d'exceptions. J'ai lu la documentation de Facebook sur oauth flow etc. mais je n'arrive pas à comprendre comment obtenir un de ces jetons d'accès que ce code trouve acceptable. Est-ce que quelqu'un sait ce que l'on peut faire avec ça?exemple de requête signée et obtention d'un jeton d'accès

<?php 

define('YOUR_APP_ID', 'x'); 
define('YOUR_APP_SECRET', 'x'); 

function get_facebook_cookie($app_id, $app_secret) { 
    $args = array(); 
    parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args); 
    ksort($args); 
    $payload = ''; 
    foreach ($args as $key => $value) { 
    if ($key != 'sig') { 
     $payload .= $key . '=' . $value; 
    } 
    } 
    if (md5($payload . $app_secret) != $args['sig']) { 
    return null; 
    } 
    return $args; 
} 

$cookie = get_facebook_cookie(YOUR_APP_ID, YOUR_APP_SECRET); 

$access_token="214620421927216|fAAieRnJoDaWmBsG1stxfq4zKN4"; 
$url = 'https://graph.facebook.com/me?access_token=' . $access_token; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
$response = curl_exec($ch); 
curl_close($ch); 

$user = json_decode($response); 
print_r($user); 

?> 
<html> 
    <body> 
    <?php if ($cookie) { ?> 
     Welcome <?php ?> 
    <?php } else { ?> 
     <fb:login-button></fb:login-button> 
    <?php } ?> 
    <div id="fb-root"></div> 
    <script src="http://connect.facebook.net/en_US/all.js"></script> 
    <script> 
     FB.init({appId: '<?= YOUR_APP_ID ?>', status: true, 
       cookie: true, xfbml: true}); 
     FB.Event.subscribe('auth.login', function(response) { 
     window.location.reload(); 
     }); 
    </script> 
    </body> 
</html> 

Répondre

0

Ce code s'est révélé beaucoup plus utile pour obtenir le jeton d'accès approprié.

<?php 

$app_id = "YOURS"; 
$app_secret = "YOURS"; 
$my_url = "YOURS"; 

session_start(); 
$code = $_REQUEST["code"]; 
echo $code . "</br>"; 

if(empty($code)) { 

$_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection 
$dialog_url = "https://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."); 
} 

?> 
Questions connexes