2012-06-07 79 views
0

我的頁面上有Facebook登錄問題。 首先,我只用FB.Login試過,但後來收到以下消息:「FB.login()在用戶已連接時調用。」Facebook登錄無限循環

所以我添加了FB.getLoginStatus但現在它保持登錄我,在一個無限循環。即使我登錄(進入我的系統)並且沒有我點擊FB-Connect按鈕。

我怎麼才能實現它,直到我點擊FB連接按鈕才能登錄?

<div id="fb-root"></div> 
<script>(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/fb_LT/all.js#xfbml=1&appId=198866780209581"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 

window.fbAsyncInit = function() { 
     FB.init({ 
     appId  : "198866780209581", // App ID 
     status  : true, 
     cookie  : true, 
     xfbml  : true, 
     oauth  : true, 
     }); 
    var login = false; 

FB.getLoginStatus(function(response) { 
    if (response.status === 'connected') { 
     console.log('connected'); 
     login=true; 
     $.ajax({ 
       type: "POST", 
       url: "/?eID=login&modus=facebook&fb-login=1", 
       data: $(this).serialize(), 
       success: function(msg) { 
       console.log("LOGIN"); 
       window.location.reload(); 
       } 
      }) 
     var uid = response.authResponse.userID; 
     var accessToken = response.authResponse.accessToken; 
    } 
    else{ 
     FB.login(function(response) { 
     if (response.authResponse) { 
     console.log('Welcome! Fetching your information.... '); 
     FB.api('/me', function(response) { 
     console.log('Good to see you, ' + response.name + '.'); 
     if(login===false) 
     { 
      alert('nicht connected'); 
     } 
     }); 
     } else { 
     console.log('User cancelled login or did not fully authorize.'); 
     } 
    }, {scope: 'email'}); 
    }}); 
// Additional initialization code here 
}; 

</script> 
+0

做'如果(response.status === '連接')'不會發生 –

+0

它發生?我登錄,但刷新頁面,並立即再次做同樣的事情。但我找到了一個解決方案。 – MrTouch

回答

0

解決的辦法是改變點擊功能是這樣的:

$( 「FB-登錄按鈕 」)生活(「 點擊」,函數(){

}

我最後的代碼如下所示:

<div id="fb-root"></div> 
<script>(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/fb_LT/all.js#xfbml=1&appId=198866780209581"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 
window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : "198866780209581", // App ID 
     status  : true, 
     cookie  : true, 
     xfbml  : true, 
     oauth  : true, 
    }); 
    var login = false; 
    $(".fb-login-button").live("click", function() { 
FB.getLoginStatus(function(response) { 
alert('hier 1'); 
    if (response.status === 'connected') { 
alert('connected'); 
     console.log('connected'); 
     login=true; 
     $.ajax({ 
       type: "POST", 
       url: "/?eID=login&modus=facebook&fb-login=1", 
       data: $(this).serialize(), 
       success: function(msg) { 
       console.log("LOGIN"); 
       window.location.reload(); 
       } 
      }) 
     var uid = response.authResponse.userID; 
     var accessToken = response.authResponse.accessToken; 
    } 
    else{ 
     alert('im else'); 
     FB.login(function(response) { 
     if (response.authResponse) { 
     console.log('Welcome! Fetching your information.... '); 
     FB.api('/me', function(response) { 
     console.log('Good to see you, ' + response.name + '.'); 
     if(login===false) 
     { 
      alert('nicht connected'); 
     } 
     }); 
     } else { 
     console.log('User cancelled login or did not fully authorize.'); 
     } 
    }, {scope: 'email'}); 
    }}); 
}); 
// Additional initialization code here 
};