web-dev-qa-db-fra.com

'statusChangeCallback' n'est pas défini Erreur de connexion Facebook Javascript SDK

Pour les nouveaux développeurs qui essaient d'intégrer la connexion et l'authentification facebook dans leurs sites Web, ils peuvent recevoir l'erreur s'ils essaient simplement de copier le didacticiel de Aide Facebook pour les développeurs.

L'erreur est: UnCaught ReferenceError: statusChangeCallback n'est pas défini

Uncaught ReferenceError: statusChangeCallback is not defined

Code:

    <script>
        function checkLoginState() {
            FB.getLoginStatus(function (response) {
                statusChangeCallback(response);
            });
        }

      (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 = "https://connect.facebook.net/en_US/sdk.js";
         fjs.parentNode.insertBefore(js, fjs);
      }(document, 'script', 'facebook-jssdk'));


      window.fbAsyncInit = function () {
          FB.init({
              appId: '<Your App ID>',
              cookie: true,
              xfbml: true,
              version: 'v2.12'
          });

          FB.AppEvents.logPageView();

      }; 
    </script>

    <fb:login-button scope="public_profile,email"
                     onlogin="checkLoginState();">
    </fb:login-button> 

<div id="status"></div>
11
vibs2006

La solution est que les nouveaux développeurs sont oubliant d'écrire la fonction de rappel de réussite dans leur code. Le problème se produit lorsqu'ils essaient de copier le code du guide Facebook qui vient immédiatement après l'enregistrement de l'application Facebook.

Dans votre code HTML, définissez un div avec le statut id <div id="status"></div> juste avant le <script> tag.

Veuillez inclure la méthode javascript ci-dessous pour que l'API fonctionne. J'ai écrit du texte détaillé sur console.log. Vous pouvez supprimer ce texte et le remplacer par le vôtre.

   function statusChangeCallback(response) {
                console.log('statusChangeCallback');
                console.log(response);
                // The response object is returned with a status field that lets the
                // app know the current login status of the person.
                // Full docs on the response object can be found in the documentation
                // for FB.getLoginStatus().
                if (response.status === 'connected') {
                    // Logged into your app and Facebook.
                    console.log('Welcome!  Fetching your information.... ');
                    FB.api('/me', function (response) {
                        console.log('Successful login for: ' + response.name);
                        document.getElementById('status').innerHTML =
                          'Thanks for logging in, ' + response.name + '!';
                    });
                } else {
                    // The person is not logged into your app or we are unable to tell.
                    document.getElementById('status').innerHTML = 'Please log ' +
                      'into this app.';
                }
            }
22
vibs2006