0

fb 로그인을 my website에 통합하려고합니다. fb에 로그인하지 않은 경우 버튼을 클릭하면 fb 자격 증명을 요청한 다음 아무 것도하지 않습니다. 그것은 단지 강제 (302 개) 상태 여기FB 로그인 버튼이 인증되지 않음

와/핑을 연결/페이스 북에 게시 요청을 전송하는 것은 그냥 위와 같이 사이트 이름을 가진 플랫폼을 추가 한 내 응용 프로그램 대시 보드에서 코드

<script> 
var isLoaded=false; 
window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : '{{app_id}}', 
     status  : true, 
     xfbml  : true 
    }); 
}; 
isLoaded=true; 

function checkIfLoaded() { 
    if(isLoaded) console.log("LOADED!"); 
    else console.log("NOT YET!"); 
    return false; 
} 

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

FB.Event.subscribe('auth.authResponseChange', function(response) { 
    if (response.status === 'connected') { 
     onLogin(response); 
    } else if (response.status === 'not_authorized') { 
     FB.login(); 
    } else { 
     FB.login(); 
    } 
}); 

function onLogin(response) { 
    console.log('login succ'); 
    var status=response.status; 
    var accessToken=response.authResponse.accessToken; 
    var expiresIn=response.authResponse.expiresIn; 
    var signedRequest=response.authResponse.signedRequest; 
    var userID=response.authResponse.userID; 

    $("#status").val(status); 
    $("#accessToken").val(accessToken); 
    $("expiresIn").val(expiresIn); 
    $("signedRequest").val(signedRequest); 
    $("userID").val(userID); 
    $("#form").submit(); 
} 

</script> 

<a href="#" onclick="checkIfLoaded();">Check</a> 
<h2>User</h2> 
<div class="fb-login-button" data-max-rows="1" data-size="medium" data-show-faces="false" data-auto-logout-link="false"></div> 

에게 있습니다. 그 밖의 것은 구성되어 있지 않습니다.

+0

처럼 (가 정의되지 전에) 정의 쓰기,이다? – Jeyhun

+0

아니오 ... 링크를 찾아 가서 찾을 수 있다면 확인하십시오 –

+0

당신의 목적은 무엇입니까? 사용자가 로그인 한 경우 어떻게해야합니까? – Jeyhun

답변

0

이 이벤트를 구독하려고 시도했을 때 FB이 초기화되지 않았으므로 FB.Event이 (가) 구독하지 않는 것이 문제입니다. 오류에 대한 콘솔을 참조하십시오, 당신은 볼 수 있습니다 :

FB가 정의되어 있지

이유는 FB 객체 당신이 API 호출을 수행 할 그래서 때마다, window.fbAsyncInit에서 비동기 적으로 정의되어 있는지 또는 FB을 사용하십시오. FB이 정의 된 후에 수행해야합니다.

그래서 문제에 대한 해결책은 FBFB.event는 당신이 에러가 발생합니까 this-

window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : '{{app_id}}', 
     status  : true, 
     xfbml  : true 
    }); 

    // write all your "FB" code here, since the FB is defined now 
    FB.Event.subscribe('auth.authResponseChange', function(response) { 
     if (response.status === 'connected') { 
      onLogin(response); 
     } else if (response.status === 'not_authorized') { 
      FB.login(); 
     } else { 
      FB.login(); 
     } 
    }); 
}; 
+0

왜 두 번'FB.login();'? 충분하다고 생각합니다. else {FB.login(); }' – Jeyhun

+0

세 가지 경우가 있습니다. 세 가지 경우 모두 처리해야합니다. 나는 페이스 북 API로 당신의 기본이 명확하지 않다고 생각한다. 자습서 pls를 따르십시오. http://developers.facebook.com –

+0

하지만 마지막으로 두 가지 경우에 대해 동일한 함수를 호출했습니다 : 'FB.login();'. – Jeyhun

관련 문제