在页面选项卡上未使用FB.ui设置OAuth 2.0 cookie

时间:2011-09-25 15:23:46

标签: facebook facebook-javascript-sdk facebook-oauth fb.ui

我正在使用FB.ui使用简单的应用程序Facebook标签进行授权:

FB.init({
  appId  : '<%= Facebook::APP_ID %>',
  status : true, // check login status
  cookie : true, // enable cookies to allow the server to access the session
  xfbml  : true,  // parse XFBML
  channelUrl  : 'http://<%= request.host_with_port %>/channel.html', // Custom Channel URL
  oauth : true //enables OAuth 2.0
});

FB.ui({
    method: 'oauth'
  },
  function(response) {
    // do some redirect stuff here
});

授权很顺利,但即使用户确认了应用程序,也没有设置相关的fbsr_xxxxx cookie。有没有办法强迫它?响应对象包含user_id,但我更愿意使用带有signed_request的标准流。

1 个答案:

答案 0 :(得分:0)

我遇到了完全相同的问题。除了使用弹出新窗口的FB.login之外,似乎无法在不刷新页面的情况下获取访问令牌。

您可能想要做的是在FB.ui响应之后对另一个页面进行ajax调用以返回访问令牌:

FB.ui({
    method: 'oauth'
  },
  function(response) {
   if(response.session){
$.get('return_token.php', function(response){
var access_token = response;
alert(access_token);
})
}
});




return_token.php:

<?
  $config = array(
    'appId' => $app_id,
    'secret' => $secret
  );

  $facebook = new Facebook($config);

  try {$access_token = $facebook->getAccessToken();}catch(FacebookApiException $e) {

        $result = $e->getResult();
        echo json_encode($result);

  }

echo $access_token;

?>