2011-09-25 3 views
0

J'utilise FB.ui d'autoriser l'application à onglet Facebook à l'aide simple:OAuth 2.0 biscuit pas défini avec FB.ui sur l'onglet Page

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

autorisation va bien, mais même lorsque l'utilisateur confirme l'application, la cookie fbsr_xxxxx pertinent n'est pas défini. Y a-t-il un moyen de le forcer? L'objet Response contient user_id, mais je préfère utiliser le flux standard avec signed_request.

Répondre

0

J'ai le même problème. Il semble y avoir aucun moyen d'obtenir le jeton d'accès sans actualiser la page autre que l'utilisation de FB.login, qui ouvre une nouvelle fenêtre.

Ce que vous pouvez faire est de faire un appel ajax à une autre page pour retourner le jeton d'accès après la réponse 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; 

?>