ho cercato l'SDK PHP (v.3.1.1), e la corrente Javascript SDK come suggerito qui: https://developers.facebook.com/docs/guides/web/Come uscire utente applicazione Facebook, ma mantenere il login da Facebook
ora quando si cerca di logout ho provato sia FB.logout() (per js) e $ facebook-> getLogoutUrl();
come documentazione per entrambi lo stato chiaramente, questi metodi disconnettono l'utente dall'applicazione e la loro sessione di Facebook.
Ma ho solo bisogno di scollegare l'utente dell'applicazione Facebook (il sito di prova).
ho cercato la registrazione l'utente dal mio sito di prova, ignorando il facebook aspetto. Ma in questo caso, quando l'utente fa di nuovo clic sul pulsante di accesso, il flusso di accesso (autenticazione e reindirizzamento di Facebook) non viene eseguito nel flusso di accesso .
Ho anche provato: (come suggerito da precedenti domande irrisolte)
$facebook->destroySession();
unset($_SESSION['fb_' . sfConfig::get('app_fb_config_id') . '_code']);
unset($_SESSION['fb_' . sfConfig::get('app_fb_config_id') . '_access_token']);
unset($_SESSION['fb_' . sfConfig::get('app_fb_config_id') . '_user_id']);
tuttavia, quando il reindirizzamento alla pagina di login, $ facebook-> getUser() ancora recupera l'utente.
nota: come da esempio la documentazione, sto usando PHP SDK per accedere l'utente al mio sito di prova, e il js sdk, per rendere e facilitare il pulsante facebook login.
supplementare:
l'autenticazione che uso è fondamentalmente ciò che la documentazione suggerisce:
<?php
define('YOUR_APP_ID', 'YOUR APP ID');
//uses the PHP SDK. Download from https://github.com/facebook/php-sdk
require 'facebook.php';
$facebook = new Facebook(array(
'appId' => YOUR_APP_ID,
'secret' => 'YOUR APP SECRET',
));
$userId = $facebook->getUser();
?>
<html>
<body>
<?php if ($userId) {
$userInfo = $facebook->api('/' + $userId); ?>
Welcome <?= $userInfo['name'] ?>
<?php } else { ?>
<div id="fb-root"></div>
<fb:login-button></fb:login-button>
<?php } ?>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '<?= YOUR_APP_ID ?>',
status : true,
cookie : true,
xfbml : true,
oauth : true,
});
FB.Event.subscribe('auth.login', function(response) {
window.location.reload();
});
};
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
</script>
</body>
</html>
se un utente è autenticato al vostro app e loged a facebook 'getUser()' restituisce sempre il FBID. l'eliminazione del cookie funziona, ma il sdk ottiene un nuovo access_token che invoca 'getUser' la domanda è perché vuoi farlo? né tu (l'app) né l'utente di Facebook ne ricavano nulla. – Rufinus
cosa ne pensi di cancellare semplicemente il cookie di sessione che hai per quell'utente? Se elimini solo il tuo cookie, l'utente rimarrà comunque connesso a Facebook, ma non alla tua app. La volta successiva che l'utente fa clic sul pulsante di accesso, crea una nuova sessione per lui. –
@NitzanTomer Ho provato a eliminare la sessione del sito di test, ma come ho affermato, in questo caso, il pulsante di accesso di js sdk non funziona più come previsto. – Alias