Comment déconnecter l'utilisateur de facebook application, mais de maintenir la connexion à partir de facebook
J'ai essayé le SDK PHP (v. 3.1.1), et le SDK Javascript
comme suggéré ici : https://developers.facebook.com/docs/guides/web/
maintenant, lorsque vous essayez de vous déconnecter, j'ai essayé les deux sur FB.logout() ( js )
et $facebook->getLogoutUrl() ;
que la documentation pour les deux clairement de l'état, ces méthodes
déconnecter l'utilisateur de l'application ainsi que leur facebook session.
Mais j'ai seulement besoin de déconnecter l'utilisateur de le facebook de l'application ( le site de test ).
J'ai essayé de déconnecter l'utilisateur de mon site de test, en ignorant le facebook
d'aspect. Mais dans ce cas, lorsque l'utilisateur clique sur le bouton connexion de nouveau,
le processus de connexion ( facebook de l'authentification et de redirection ) ne se fait pas.
J'ai aussi essayé : ( comme suggéré par les précédentes questions non résolues)
$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']);
cependant, lors de la redirection vers la page de login, $facebook->getUser() encore
extrait de l'utilisateur.
note :
comme par exemple de la documentation, je suis en utilisant sdk php de connexion à l'utilisateur de mon site de test,
et la js sdk, de restituer et de faciliter l'facebook bouton de connexion.
supplémentaires :
l'authentification que j'utilise est, fondamentalement, ce que suggère la documentation :
<?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>
getUser()
retournera toujours la FBID. effacer le cookie fonctionne, mais le sdk d'obtenir un nouveau access_token wenn invoquant getUser
la question est de savoir pourquoi vous voulez le faire ? ni vous (l'app), ni le facebook de l'utilisateur gains de rien.comment parler tout simplement de supprimer le cookie de session que vous avez pour l'utilisateur? Si vous supprimez vos cookies, l'utilisateur reste connecté à facebook, mais pas pour votre application. La prochaine fois que l'utilisateur clique sur le bouton connexion pour vous créer une nouvelle session pour lui.
J'ai essayé tout simplement de supprimer le site de test de la session, mais comme je l'ai dit, dans ce cas, la js sdk du bouton de connexion ne fonctionne plus comme prévu.
pas sûr de ce que vous êtes en train de dire ici, "pourquoi vous voulez faire ça?" . En gros, je veux juste que l'utilisateur soit connecté sur le site et le facebook de l'association éliminé lorsque l'utilisateur se déconnecte. Toutefois, si l'utilisateur décide de se connecter à nouveau, je veux que l'ensemble du processus d'ouverture de session à se comporter comme si une connexion précédente n'avait pas eu lieu.
C'est une autre question, pouvez-vous s'il vous plaît montrer votre code pour l'authentification avec facebook?
OriginalL'auteur Alias | 2012-03-20
Vous devez vous connecter pour publier un commentaire.
De prendre votre code, et modifiant juste un peu:
J'ai juste ajouté l'enregistrement des données de l'utilisateur dans la session.
Maintenant, si vous utilisez cette méthode, lorsque l'utilisateur dans votre page, vous devez vérifier si il a déjà une session, si tout est donc bon pas besoin de s'authentifier lui.
Lorsque vous souhaitez déconnecter l'utilisateur de votre application, mais pas de facebook, il suffit de détruire la session:
Qui devrait supprimer toutes les données enregistrées vous avez pour l'utilisateur, la prochaine fois qu'il visite votre page, vous pouvez recommencer à zéro avec lui.
Je ne suis pas un programmeur php, et tout le php j'ai utilisé ici est de ma (très) limité de la connaissance et de ce que j'ai trouvé autour de.
ce que j'aurais voulu, c'est : 1.) utilisateur ( non connecté à fb ou site ) se connecte au site via fb login, journaux et fb session est également détruit. 2.) utilisateur ( connecté à fb, pas de site ), les journaux de site via fb login, les journaux de site mais fb séance est maintenue.
Bien sûr. Facebook vous donne le moyen de connecter les utilisateurs de sa plate-forme, mais si de prendre cette approche ou à la place du journal de l'utilisateur de votre site est à vous et à votre application. Vous avez demandé comment se connecter à un utilisateur de simplement votre demande et pas de facebook, c'est ce que j'essayais de vous aider avec. Vous pouvez avoir deux types différents de boutons si vous ne voulez pas faire un choix: "journal de site & fb" et "journal de site" et de laisser l'utilisateur décider.
Pour autant que je suis conscient que vous n'avez aucun moyen de savoir si l'utilisateur est déjà connecté à facebook. Vous utilisez l'authentification machenism qui comprend quelques étapes, et vous sont intégrés dans le processus seulement après que l'utilisateur (1) connecté à facebook (2) autorisé de votre application et (3) et c'est facultatif - l'utilisateur vous a accordé les autorisations (ou en partie) que vous avez demandé
Oui, j'apprécie le point, et peut-être que je pourrais même trouver une façon de façon dynamique la faciliter. Mais de toute façon, je me demandais si il y avait une méthode que j'ai manqué tout au long.
OriginalL'auteur Nitzan Tomer