0

Was ich erreichen will, ist, dass ich wissen möchte, ob ein bestimmter Benutzer in Facebook mit meinem Plugin angemeldet ist.Facebook JavaScript SDK in WordPress integrieren

Was ich getan habe, ist ich folgte den Anweisungen von facebook.

Unterhalb der <body> in meinem Header in Wordpress habe ich

<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : 'my_app_id', 
     xfbml  : true, 
     version : 'v2.7' 
    }); 
    }; 

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

ich dort meine App-ID auch hinzugefügt

Im Plugin habe ich das Tutorial oben, wie Sie den Benutzer zu identifizieren. So habe ich diesen Code in das Plugin

<script type="text/javascript"> 

    FB.getLoginStatus(function(response) { 
    if (response.status === 'connected') { 
    // the user is logged in and has authenticated your 
    // app, and response.authResponse supplies 
    // the user's ID, a valid access token, a signed 
    // request, and the time the access token 
    // and signed request each expire 

    var uid = response.authResponse.userID; 
    var accessToken = response.authResponse.accessToken; 

    document.write('connected'); 
    } else if (response.status === 'not_authorized') { 
    // the user is logged in to Facebook, 
    // but has not authenticated your app 
    document.write('not_authorized'); 
    } else { 
    // the user isn't logged in to Facebook. 
    document.write('not connected'); 
    } 
}); 


</script> 

Aber das Problem ist, dass es nicht funktionieren wird. Nichts wird angezeigt.

Mache ich das Richtige? oder ich vermisse etwas?

+0

Ich bin nicht sicher, was Sie passieren erwarten. Hast du den Code debuggt? "Nichts wird angezeigt" ist keine ausreichende Fehlerbeschreibung, Sie müssen genauer sein. Was ist mit console.log und Ihren Browser-Entwicklungstools? es gibt auch keinen login-code, also ist der user natürlich nie autorisiert ... – luschn

+0

sollte man das lesen (und die facebook docs): http://www.devils-heaven.com/facebook-javascript-sdk-login/ – luschn

+0

Laut der Dokumentation --- >> ist der Benutzer bei Facebook eingeloggt und hat Ihre Anmeldung authentifiziert (verbunden) - >>> der Benutzer ist bei Facebook angemeldet aber hat Ihre Anmeldung nicht authentifiziert (not_authorized) --- >> Der Benutzer ist entweder nicht bei Facebook angemeldet oder explizit von Ihrer Anwendung ausgeloggt, so dass er nicht versucht, sich mit Facebook zu verbinden und somit wissen wir nicht, ob er Ihre Bewerbung authentifiziert hat oder nicht (unbekannt) – Ikong

Antwort

0

Denken Sie, Sie sollten Facebook Button für die Anmeldung mit Facebook zeigen. zum Beispiel:

<div class="fb-status text-center"> 
    <fb:login-button data-size="xlarge" scope="public_profile,email,user_photos"> 
    </fb:login-button> 

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

Dann irgendwie müssen Sie, dass der Benutzer wissen, versucht, mit Facebook anmelden und nur dann prüfen, ob Benutzer seinen Namen zu verwenden, erlaubt, E-Mail und andere Optionen, was Sie im Rahmen definiert.

In meinem Plugin war wie folgt. Ich weiß, das ist schlechte Praxis, aber es funktioniert für mich.

<script> 
    fbGalleries.loginStatus = false; 

    function checkLoginState() { 
      FB.getLoginStatus(function(response) { 
       statusChangeCallback(response); 
      }); 
      if (fbGalleries.loginStatus == false) { 
       setTimeout(checkLoginState, 2000); 
      } 
      else { 
       $('.fb-status').remove(); 
      } 
     } 

     window.fbAsyncInit = function() { 
      FB.init({ 
       appId  : '*****************', 
       cookie  : true, // enable cookies to allow the server to access 
            // the session 
       xfbml  : true, // parse social plugins on this page 
       version : 'v2.5' // use graph api version 2.5 
      }); 

     }; 

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

    function statusChangeCallback(response) { 
     if (response.status === 'connected') { 
      testAPI(); 
     } else if (response.status === 'not_authorized') { 
      document.getElementById('status').innerHTML = 'Please log ' + 
       'into this app.'; 
     } else { 
      document.getElementById('status').innerHTML = 'Please log ' + 
       'into Facebook.'; 
     } 
    } 

    function testAPI() { 
     FB.api('/me', function(response) { 
      console.log('Successful login for: ' + response.name); 
      document.getElementById('status').innerHTML = 
       'Thanks for logging in, ' + response.name + '!'; 
      getFbPhotos(); //in my case pooling user photo galeries 
      fbGalleries.loginStatus = true; 
     }); 
    } 

</script> 

Einige wo Sie laufen müssen checkLoginState();

Verwandte Themen