API de Facebook: inicie sesión con JavaScript SDK y luego verifique el estado de inicio de sesión con PHP

Estoy utilizando el SDK de JavaScript de Facebook para abrir una ventana emergente de inicio de sesión cuando el usuario hace clic en el botón Iniciar sesión.

El código es, como Facebook proporciona en la donación:

$(".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.
     });
 });

Tambien puedo usarFB.getLoginStatus() para comprobar que el usuario ha iniciado sesión y aceptado la aplicación.

Sin embargo, ahora me gustaría ejecutar una función con PHP. Por lo que yo entiendo, PHP tiene$user que se asigna el ID de usuario después de un inicio de sesión exitoso.

El problema es después del inicio de sesión de JS.$user es todavía0. Estoy atascado y no puedo entender por qué no asigna el ID de usuario correcto a$user

Aquí está mi 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>

Y aquí está el 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;

    }

    ?>

Respuestas a la pregunta(3)

Su respuesta a la pregunta