Facebook API: connectez-vous à l'aide de JavaScript SDK puis vérification de l'état de connexion avec PHP
Je suis en utilisant Facebook du SDK JavaScript pour afficher un Popup Login lorsque l'utilisateur clique sur le bouton Connexion.
Le code est, comme Facebook fournit dans le 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.
});
});
Je peux aussi utiliser FB.getLoginStatus()
vérifier que l'utilisateur a en effet enregistré et accepté l'application.
Cependant, maintenant, je voudrais exécuter une fonction PHP. Comme je le comprends, PHP a $user
qui est attribué le nom d'utilisateur après une connexion réussie.
Le problème, c'est après le JS de Connexion $user
est encore 0
. Je suis coincé et je ne peux pas comprendre pourquoi il ne sera pas affecter le bon nom d'utilisateur pour $user
Voici mon 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>
Et voici le 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;
}
?>
OriginalL'auteur user1386254 | 2013-07-14
Vous devez vous connecter pour publier un commentaire.
De connexion avec la JS SDK stocke les données de connexion dans le Facebook des cookies lors de la connexion avec le SDK PHP enregistre les données dans la session PHP. Donc, si vous vous connectez avec la JS SDK le SDK PHP ne sera pas conscient de cela.
De vous connecter avec le SDK PHP à l'aide de la JS SDK de données, vous devez appeler votre page PHP avec la signature de la demande dans le paramètre de requête:
Puis
$facebook->getUser()
vous donnera l'id de l'utilisateur dans votre code PHP.Vous avez raison, je ne le savais pas. Je vais proposer une simple réponse.
OriginalL'auteur Ale
Lors de l'initialisation de l'Facebook objet en PHP, essayez de définir la
sharedSession
paramètretrue
:OriginalL'auteur Ale
vous pouvez trouver des exemple de travail d'ici
http://liferaypower.blogspot.com/2013/10/index.html
Exemple de code
OriginalL'auteur jakhaniya jayesh