2011-09-25 7 views
0

Я использую FB.ui для авторизации с применением вкладки Facebook с помощью простой:OAuth 2.0 печенья не установлено с FB.ui на вкладке Страница

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

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

ответ

0

У меня такая же проблема. Кажется, что нет способа получить токен доступа, не обновляя страницу, кроме использования 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; 

?> 

 Смежные вопросы

  • Нет связанных вопросов^_^