获取Facebook访问令牌而无需重定向

时间:2012-11-06 04:40:02

标签: php facebook redirect access-token

这是我检索用户访问令牌的方法

$code = $_REQUEST["code"];
 //auth user
 if(empty($code)) {
     $dialog_url = 'https://www.facebook.com/dialog/oauth?client_id=myclientid&redirect_uri=' . urlencode('http://myweb.com/facebook.php') ;
    echo("<script>top.location.href='" . $dialog_url . "'</script>");
  }
  //get user access_token
  $token_url = 'https://graph.facebook.com/oauth/access_token?client_id=myclientid&redirect_uri=' . urlencode('http://myweb.com/facebook.php') 
    . '&client_secret=mybigsecret&code=' . $code;
  $access_token = file_get_contents($token_url);

但是我想知道在没有任何重定向的情况下我是否能够做到这一点?

2 个答案:

答案 0 :(得分:0)

我认为普通浏览器没有解决方案,因为Facebook在oauth页面中设置了标题X-Frame-Options:DENY,在这种情况下拒绝使用iframe。

答案 1 :(得分:0)

这是我的编码,你可以试试......

$code = $_REQUEST["code"];
$response = file_get_contents(
    "https://graph.facebook.com/oauth/access_token?" .
    "client_id=" . $client_id .
    "&redirect_uri=" . $redirect_url .
    "&client_secret=" . $client_secret .
    "&code=" . $code
);
parse_str($response, $params);
$graph_url = "https://graph.facebook.com/me?access_token=" . $params['access_token'];
$user_data = json_decode(file_get_contents($graph_url));
$user = $user_data->id; //get active fb user id
$facebook->setAccessToken($params['access_token']);

P.S。 $params['access_token']用于access_token值...