Facebook SDK PHP - ne sera pas de déconnexion correctement
J'ai cherché pendant des heures pour trouver la solution à ce problème, mais ne pouvez pas en trouver un qui fonctionne pour moi. Lorsque je clique sur "Déconnexion" sur mon site les renseignements de l'utilisateur est toujours visible et le bouton de déconnexion est toujours affiché. Voici le code:
require 'facebook-php-sdk/src/facebook.php';
$facebook = new Facebook(array(
'appId' => 'xxxx',
'secret' => 'xxxx',
));
//Get User ID
$user = $facebook->getUser();
var_dump($user);
if ($user) {
try {
//Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
//Login or logout url will be needed depending on current user state.
if ($_GET['logout'] == "yes") {
setcookie('fbs_'.$facebook->getAppId(), '', time()-100, '/', 'http://gno.....ment/index.php');
session_destroy();
header("Location: ".$_SERVER['PHP_SELF']."");
}
if ($user_profile) {
$logoutUrl = $facebook->getLogoutUrl;
} else {
$loginUrl = $facebook->getLoginUrl(array('scope' => 'email,publish_stream,user_status',
'canvas' => 1,
'fbconnect' => 0,
'redirect_uri' => 'http://gno.....ment/index.php'));
}
.....
.....
<?php if ($user): ?>
<h3>You</h3>
<img src="https://graph.facebook.com/<?php echo $user; ?>/picture">
<h3>Your User Object (/me)</h3>
<pre><?php print_r($user_profile); ?></pre>
<?php else: ?>
<strong><em>You are not Connected.</em></strong>
<?php endif ?>
<?php if ($user): ?>
<a href="<?php echo $logoutUrl; ?>">Logout of FB</a>
<?php else: ?>
<div>
Login using OAuth 2.0 handled by the PHP SDK:
<a href="<?php echo $loginUrl; ?>">Login with Facebook</a>
</div>
<?php endif ?>
Il semble que if ($_GET['logout'] == "yes")
pourrait être la réponse pour moi, mais je ne peux pas le faire fonctionner. Je ne sais pas où logout
est obtenu à partir de ou où il est défini?
Cela semble être un problème commun, mais je ne peux pas le comprendre. J'apprécierais vraiment de l'aide.
Vous devez vous connecter pour publier un commentaire.
De le faire avec PHP SDK est vraiment facile, la documentation est vraiment moche. Vous n'avez pas besoin de rediriger vers Facebook. Vous avez juste à effacer la session que le Facebook de la classe des ensembles, il y a une fonction pour que, dans le Facebook de la classe de base appelée destroySession(). Ici, je suis en train de faire un obtenir.
L' $facebook->getLogoutUrl() enregistre l'utilisateur de Facebook.
Vous pouvez résoudre ce problème en spécifiant externe de déconnexion problème. Vous pouvez avoir un coup d'oeil à ici
pour des informations détaillées. C'est un bon tutoriel pour ce problème.
Espère que cette aide
Pour répondre directement à votre question
Lorsque vous créez votre url de déconnexion, ajouter un paramètre supplémentaire "déconnexion"
Puis dans votre script, vous effacer la session et des cookies lorsque
isset($_GET['logout'])
Ici est de savoir comment me déconnecter à l'aide de la dernière PHP-SDK:
login.php
logout.php
J'ai pu faire déconnecter l'utilisateur de mon application en utilisant:
La
rend l'utilisateur sera déconnecté de facebook, pas à partir de votre application.
Avait une sorte de semblable de la difficulté avec ça.
Même
n'a pas fonctionné correctement jusqu'à ce que j'ai enlevé
appel complètement.
getLogOutUrl()
ajouté un certain nombre de paramètres qui contredit plus tard avec mon .htaccess et conduit à *"mod_fcgid: stderr: CSRF état jeton ne correspond pas à celle prévue"* erreur.Parce que j'ai encore de PHP 5.3 à mon CentOS 6.7 serveur dans l'année 2016 et ne veulent pas prendre les tracas de la mise à niveau de la version de PHP - je encore utiliser l'ancien facebookarchive/facebook-php-sdk au lieu de la plus récente facebook/facebook-php-sdk-v4 bibliothèque.
Et voici comment je gère la déconnexion de mon application:
Ne pas oublier d' -
https://example.com/myapp/
au même endroitJe me souviens que c'était une énorme douleur dans une de mes applications. Il semble que, finalement, ce qui semblait travail a été:
Je doit être la même sans jQuery (il suffit d'exécuter FB.logout() au chargement de la page). AFAIR je n'ai pas pu obtenir que cela fonctionne sur le côté serveur en PHP. Espérons que cela aide :).
FB.logout()
? Où abouts dans mon code dois-je mettre cela?FB.logout
dans touteonready
gestionnaire sur le côté client. (jQuery est juste ce que j'utilise pour définir laonready
gestionnaire).