0

내가 원하는 것은 특정 사용자가 내 플러그인을 사용하여 페이스 북에 로그인했는지 알고 싶습니다.WordPress에 Facebook JavaScript SDK 통합

내가 한 것은 facebook의 지침을 따른 것입니다. 워드 프레스 내 헤더에 <body> 아래

나는 내가 사용자를 식별하는 방법에 대한 위의 자습서를 사용하는 플러그인도

가 내 앱 ID를 추가

<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> 

을 추가했다. 그래서 플러그인

<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> 

에이 코드를 추가 그러나 문제는 그것이 작동하지 것입니다. 아무 것도 표시되지 않습니다.

올바른 일을하고 있습니까? 또는 나는 무엇인가 놓치고있다?

+0

실행할 필요로하는 곳에. 코드를 디버깅 했습니까? "아무 것도 표시되지 않습니다"는 충분한 오류 설명이 아니므로보다 구체적으로 설명해야합니다. console.log 및 브라우저의 dev 도구는 어떻습니까? 또한 로그인 코드가 없으므로 물론 사용자는 승인되지 않습니다 ... – luschn

+0

이 내용 (및 Facebook 문서)을 읽어야합니다. http://www.devils-heaven.com/facebook-javascript-sdk-login/ – luschn

+0

문서에 따르면 --- >> 사용자가 Facebook에 로그인하여 응용 프로그램 (연결됨) 을 인증했습니다 - >>> 사용자가 Facebook에 로그인했지만 응용 프로그램을 인증하지 않았습니다 (not_authorized) --- >> 사용자가 Facebook에 로그인하지 않았거나 응용 프로그램에서 명시 적으로 로그 아웃하지 않았으므로 Facebook에 연결하지 않으므로 응용 프로그램을 인증했는지 여부를 알 수 없습니다 (알 수 없음) – Ikong

답변

0

facebook으로 로그인하려면 Facebook 버튼을 표시해야한다고 생각하십시오. 예를 들면 :

<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> 

그런 다음 어떻게 든 당신은 사용자가 페이스 북으로 로그인하고 사용자가 자신의 이름, 이메일과 범위에 정의 된 어떤 다른 옵션을 사용할 수있는 경우에만 다음 확인을 시도 알아야합니다.

내 플러그인에 이런 것이있었습니다. 나는 그것이 나쁜 습관이라는 것을 알고 있지만 그것은 나를 위해 일합니다.

<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> 

일부 당신은 내가 당신 일이 기대하는 것을 확실하지 않다 checkLoginState();