2011-01-31 6 views
2

사용자가 Facebook을 통해 사이트에 로그인 할 수 있도록 Facebook Javascript SDK를 설정하려고합니다. 말할 것도없이, 나는 페이스 북의 문서에 혼란스러워한다. 내 첫 번째 질문은 사용자가 Facebook에 로그인 한 상태에서 Facebook ID를 확인하고 내 사이트에 로그인 할 때 (사용자 상호 작용없이) 사용자를 감지 할 수 있습니까? 이 부분을 제외하고는 모든 것이 정상적으로 작동하는 것처럼 보입니다. 사용자가 Facebook 로그인 버튼을 클릭하면 모든 것이 올바르게 작동하고 getLoginStatus()가 올바르게 실행됩니다. 하지만 초기 페이지로드시 getLoginStatus()는 콜백 함수를 호출하지 않는 것 같습니다. 그리고 나는 심지어 로그인 버튼이 없어야한다는 인상 아래에 있었고 Facebook에 로그인 한 경우 페이스 북의 "등록"버튼이어야합니다. 아래에 몇 가지 코드를 포함 시켰습니다. 누구든지 나에게 이것에 대한 지침을 줄 수 있다면 크게 감사하겠습니다. 내 앱 ID와 사이트 이름을 삭제하고 '더미'텍스트로 바꿨습니다.facebook javascript sdk getLoginStatus() 문제

<!-- Load Facebook javascript SDK (This should be the first item after the opening body tag) --> 
<div id="fb-root"></div> 
<script> 
     window.fbAsyncInit = function() { 
     FB.init({appId: myAppId, status: true, cookie: true, 
       xfbml: true}); 

     FB.getLoginStatus(function(response) { 
      if (response.session) { 
      // logged in and connected user, someone you know 
        alert('I know you'); 
      } else { 
      // no user session available, someone you dont know 
       alert('Who are you?'); 
      } 
      alert(response.session.uid); 

     }); 
     }; 

     (function() { 
     var e = document.createElement('script'); e.async = true; 
     e.src = document.location.protocol + 
      '//connect.facebook.net/en_US/all.js'; 

     document.getElementById('fb-root').appendChild(e); 
     }()); 
</script> 
<fb:login-button show-faces="false" width="70" max-rows="1" registration-url="myRegistrationUrl" style="margin: 0; padding: 0;"></fb:login-button> 

답변

0

안녕하세요. 회원님의 페이스 북 계정을 기반으로 사이트에 사용자를 로그인하고 싶습니다. 나는 똑같이했다. 먼저 사용자가 페이스 북에 로그인하도록 한 다음 사용자 ID를 사용자 테이블로 보낸 다음 사용자를 사이트로 로그인하십시오. 나를 위해 코드 작품 아래.

 
<div id="fb-root"> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({appId: "XXXXXX", 
      status: true, 
      cookie: true, 
      xfbml: true}); 

    FB.getLoginStatus(function(response) { 
     if (response.session) { 
     //here send the parameters to your system that logins into your system 
     self.location.href="http://www.yoursite.com/login.php"; 
     } else { 

     } 
    }); 
    FB.Event.subscribe("auth.login", function(response) { 
    window.location.reload(); 
     }); 
FB.Event.subscribe("auth.logout", function(response) { 
    // to logout 

    self.location.href="http://www.yoursite.com/logout.php"; 
     }); 
    }; 
    (function() { 
    var e = document.createElement("script"); 
    e.type = "text/javascript"; 
    e.src = document.location.protocol + 
    "//connect.facebook.net/en_US/all.js"; 
    e.async = true; 
    document.getElementById("fb-root").appendChild(e); 
    }()); 
    </script> 

login.php에서 사용자 이름을 확인할 수 있습니다. 귀하의 사이트에 로그인하십시오. 내가 한 일은 jason을 통해 사용자 이름으로 보낸 사용자 ID를 보내고 md5 이후에 내 usertable의 암호로 보냅니다. 그럼 난 간단하게 login.php에 내 사용자 테이블에 userid를 비교하고 내 사이트에 사용자를 로그인하십시오. 나는 그것이 당신을 위해 또한 작동 할 것이라는 점을 희망한다

+0

당신이 그것을 (즉,이 데이터를 스푸핑 아니에요) –

+0

@Robert 코네티컷을 유효하고 안전하다는 것을 확인하기 위해 페이스 북에서 오는 데이터의 서명을 확인합니까. 난 당신의 지점이 사랑하는 이해 didnt는 . 액세스 토큰을 통해 데이터를 가져 오는 경우 어떻게 스푸핑 된 데이터를 가져올 수 있습니까? –