EDIT * * *Facebook PHP-SDK nicht ungesetzt SESSION wenn Benutzerberechtigungen Anwendung widerruft
Ich glaube, ich nicht genug erklärt habe/richtig, hier sind die Schritte, wenn ich das Problem mit die Sitzung:
1.- Benutzer-Logins mit JSSDK und akzeptiert meine App.
2.- Jetzt verwende ich das PHP-SDK um getUser(); und einige Seiten einschränken oder anzeigen.
3.- Der Benutzer wird nicht abgemeldet, widerruft aber die Berechtigungen direkt aus den Profileinstellungen.
4.- Der Benutzer kehrt zu meiner Anwendung zurück (ohne die Seite/den Browser natürlich zu schließen) und das PHP-SDK gibt getUser() als gültigen verbundenen Benutzer zurück!
5.- Wie soll meine Anwendung wissen, dass der Benutzer die Berechtigungen widerrufen hat, wenn das PHP-SDK angibt, dass die getUser() eine gültige ID ist?
Meine Benutzer anmelden, um meine Anwendung mit dem JS-SDK und den folgenden Code:
FB.login(function(response) {
// handle the response
}, {scope: 'email,user_likes'});
- und das ist das asynchrone Skript
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '****************', // App ID
channelUrl : 'localhost', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
oauth:true
});
// Additional initialization code here
};
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>`
Wenn jedoch die Benutzer entfernen die Anwendung aus ihren Datenschutzeinstellungen und versuchen, erneut auf meine Anwendung zugreifen, dieser Code gibt immer noch die Benutzer - ID $user = $facebook->getUser();
Ich habe die facebook.php
aus dem PHP-SDK überprüft und es gibt eine Methode, die unset
die SESSION
ist, aber nichts deaktiviert.
protected function clearPersistentData($key) {
if (!in_array($key, self::$kSupportedKeys)) {
self::errorLog('Unsupported key passed to clearPersistentData.');
return;
}
$session_var_name = $this->constructSessionVariableName($key);
unset($_SESSION[$session_var_name]);
}
Ist das ein Fehler? oder liest Facebook die Sitzung immer, selbst wenn der Benutzer die Berechtigungen der Anwendung widerrufen hat?
Ich denke, das Verhalten von $facebook->getUser();
sollte 0
ausgeben, wenn der Benutzer nicht mit der Anwendung verbunden ist, aber das ist natürlich nicht, was passiert.
Ich habe zusätzliche Informationen am Ende der Frage hinzugefügt, nur damit es besser erklärt wird. – Danny
Meine Antwort bleibt gleich. Wenn jemand die Berechtigung widerruft, gibt es keine Möglichkeit zu wissen, dass Sie das JS SDK verwenden und eine aktuelle Sitzung läuft.Um dies zu bestätigen, müssen Sie eine Methode aufrufen, die eine Berechtigung für Facebook erfordert, und nach der abgelehnten Antwort suchen. –