0

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

$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);

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

4

2 回答 2

0

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

于 2012-11-06T06:35:14.197 回答
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']);

PS $params['access_token']for access_token 值...

于 2012-11-06T10:03:00.447 回答