Файл cookie OAuth 2.0 не устанавливается с помощью FB.ui на вкладке «Страница» - PullRequest
0 голосов
/ 25 сентября 2011

Я использую 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
});

Авторизация проходит нормально, но даже когда пользователь подтверждает приложение, соответствующий файл cookie fbsr_xxxxx не устанавливается. Есть ли способ заставить его? Объект ответа содержит user_id, но я бы предпочел использовать стандартный поток с signature_request.

1 Ответ

0 голосов
/ 01 октября 2011

У меня точно такая же проблема.Кажется, нет никакого способа получить токен доступа без обновления страницы, кроме как с помощью FB.login, который открывает новое окно.

Что вы можете сделать, это сделать ajax-вызов на другую страницу, чтобы вернуть маркер доступа после ответа FB.ui:

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;

?>
...