Facebook API: Login mit JavaScript SDK überprüfung der login-Status mit PHP
Ich bin mit Facebook JavaScript SDK, um ein Login-Fenster, wenn der Benutzer auf den Login-button.
Den code, wie Facebook bietet in den doucmentation:
$(".loginButton").click(function(){
FB.login(function(response) {
FB.api('/me', function(response) {
console.log(response.id);
//User ID shows up so I can see that the user has accepted the app.
});
});
Ich kann auch mit FB.getLoginStatus()
zu überprüfen, dass der Benutzer tatsächlich angemeldet und den Antrag angenommen.
Aber jetzt möchte ich eine Funktion ausführen, mit PHP. Soweit ich das verstehe, PHP $user
zugeordnet ist die UserID nach einem erfolgreichen login.
Das problem ist nach dem JS Login $user
noch 0
. Ich bin stecken und ich kann nicht herausfinden, warum es nicht richtig zuweisen Benutzer-ID zu $user
Hier ist mein JS:
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId : '<?php echo $AppId; ?>',
status : true, //check login status
cookie : true, //enable cookies to allow the server to access the session
xfbml : true,
channelUrl : '<?php echo $ServerPath; ?>channel.php' //custom channel
});
};
//Get Login Status
function amILoggedIn(){
var toreturn = "";
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
window.userId = response.authResponse.userID;
toreturn = "GetLoginStatus: logged in" + " " + "<?php echo $user; ?>";
} else {
toreturn = "GetLoginStatus: Logged Out";
}
console.log(toreturn);
});
};
//Load the SDK asynchronously
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
var obj = {
method: 'feed',
link: 'http://www.google.com'
};
$(".loginPopupButton").click(function(){
FB.login(function(response) {
FB.api('/me', function(response) { //user-specific stuff
console.log(response.id);
});
});
});
</script>
Und hier ist der PHP:
<?php
include_once('fbapi/facebook.php');
include_once('fbapi/Authenticated_User.php');
include_once('config.php');
//Create our Application instance.
$facebook = new Facebook(array(
'appId' => $AppId,
'secret' => $AppSecret
));
//Facebook Authentication part
$user = $facebook->getUser();
$perms = "manage_pages";
if(isset($_GET['backlink']))
$redirectUrl = urldecode($_GET['backlink']);
else
$redirectUrl = $fullserverpath;
$cancelUrl = $ServerPath."index.php?page=loginWFb";
//AA - where to go to get FB popup.
$loginUrl = $facebook->getLoginUrl(
array(
'scope' => $perms,
'redirect_uri' => $redirectUrl,
'cancel_uri' => $cancelUrl
)
);
//AA- Defining that a powerUSER is someone who's logged in
if(isset($user)){
$_SESSION['loggedIn'] = $user;
}
?>
- Du musst den access token von JS zu PHP (und verwenden Sie es in der PHP-Bibliothek).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Login mit JS SDK speichert die login-Daten in die Facebook-cookies während der Anmeldung mit dem PHP-SDK speichert die Daten in der PHP-session. Also, wenn Sie sich mit der JS-SDK, das PHP-SDK wird nicht bewusst sein, dass.
Login mit dem PHP-SDK über die JS-SDK-Daten, müssen Sie rufen Sie Ihr PHP-Seite mit Sie die signierte Anfrage in der query-parameter:
Dann
$facebook->getUser()
geben Sie die Benutzer-id in Ihrem PHP-code.Beim initialisieren der Facebook-Objekt in PHP, versuchen Sie, die
sharedSession
parametertrue
:finden Sie Beispiel arbeiten von hier aus
http://liferaypower.blogspot.com/2013/10/index.html
Beispielcode