2012-06-27 62 views
4

我試圖讓Facebook上的登錄按鈕使用JavaScript SDK在我的網站上工作。如果用戶登錄,我會收到電子郵件地址。這工作。但是在我擁有我的Facebook登錄按鈕的頁面上,我也有我的網站的正常登錄。 (用戶名爲&密碼)。但是當我進入我的登錄頁面時,頁面會自動加載Facebook按鈕並顯示Facebook登錄對話框。但我不想自動加載這個按鈕。我希望用戶總是必須按Facebook的登錄按鈕。這可能嗎?Javascript SDK自動登錄

這是我的代碼:

<script> 
    window.fbAsyncInit = function() { 
FB.init({ 
     appId: 'MY_APP_ID', // App ID 
     status: true, 
     cookie: true, 
     xfbml: true, 
     oauth: true, 

}); 
FB.getLoginStatus(function(response) { 
    FB.login(function(response) { 
    if (response.authResponse) { 
    FB.api('/me', function(response) { 
     alert('Good to see you, ' + response.email + '.'); 
    }); 
    } else { 
    alert('User cancelled login or did not fully authorize.'); 
    } 
}); 
}); 

// Additional initialization code here 
    }; 

    // Load the SDK Asynchronously 
    (function(d){ 
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
js = d.createElement('script'); js.id = id; js.async = true; 
js.src = "//connect.facebook.net/en_US/all.js"; 
d.getElementsByTagName('head')[0].appendChild(js); 
    }(document)); 
</script> 

回答

5

FB.getLoginStatus方法是用於瞭解用戶是否登錄或不

FB.login用於提示登錄頁面進行認證和授權的應用程序。

您正在調用FB.getLoginStatus方法,並且不會打擾響應並始終啓動fb.login按鈕。

如果你總是希望用戶點擊登錄按鈕不使用FB.getLoginStatus

使用此代碼

<html> 
    <head> 
     <title>My Facebook Login Page</title> 
    </head> 
    <body> 

     <div id="fb-root"></div> 
     <script> 
     window.fbAsyncInit = function() { 
      FB.init({ 
      appId  : 'YOUR_APP_ID', // App ID 
      channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File 
      status  : true, // check login status 
      cookie  : true, // enable cookies to allow the server to access the session 
      xfbml  : true // parse XFBML 
      }); 
     }; 
     // Load the SDK Asynchronously 
     (function(d){ 
      var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
      if (d.getElementById(id)) {return;} 
      js = d.createElement('script'); js.id = id; js.async = true; 
      js.src = "//connect.facebook.net/en_US/all.js"; 
      ref.parentNode.insertBefore(js, ref); 
     }(document)); 
     </script> 

     <div class="fb-login-button">Login with Facebook</div> 

    </body> 
</html> 

FYI:https://developers.facebook.com/docs/guides/web/
檢驗認證部

+0

啊,我覺得就是這樣。不,我需要嘗試瞭解身份驗證如何工作..我沒有得到它,例如,我如何獲得用戶的電子郵件地址? – Ruub

+1

_「我不明白我如何獲得用戶的電子郵件地址?」 - 當然,通過查詢Graph API。 'FB.api(「/ me」,function(response){...});'(並且不要忘記首先獲得必要的許可。) – CBroe