使用Javascript SDK登录facebook后自动重定向

时间:2012-12-22 08:39:50

标签: facebook facebook-javascript-sdk facebook-login

请帮帮我。我知道这很简单,但运气不好:(

我正在尝试按照facebook official docs在我的网站中使用JavaScript SDK实现facebook登录。当我进入mysite登录页面时,Facebook登录窗口会自动弹出。但是我点击登录按钮后想要它。

登录按钮:

<p class="fb_login">or <img src="assets/img/fb-login-button.jpg" onClick="FB.login()" onlogin="alert( 'Logged In' );"></p>

使用Javascript:

window.fbAsyncInit = function() {
    FB.init({
      appId      : '486435991400780', // App ID
      channelUrl : '//http://localhost/ride/assets/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
    });

    // Additional init code here
    FB.getLoginStatus(function(response) {
        if (response.status === 'connected') {
            // connected
            replace_login();
            FB.api('/me', function(response) {
                console.log('Good to see you, ' + response.name + '.');
                alert('Good to see you, ' + response.name + '.');
            });
        } else if (response.status === 'not_authorized') {
            // not_authorized
            login();
        } else {
            // not_logged_in
            login();
        }
    });
  };

  function login() {
      FB.login(function(response) {
          if (response.authResponse) {
              // connected
              window.location.reload();
          } else {
              // cancelled
              alert('User cancelled login or did not fully authorize.');
          }
      });
  }

  function replace_login(){
       FB.api('/me', function(response) {
           $('.fb_login').html('<span class="fb_logged_in">' + response.name + ', You are already logged in with Facebook!</span>');
       });
  }

  // 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));

在我的HTML上:

<div id="fb-root"></div>
<script src="assets/js/fb-login.js" type="text/javascript"></script>

感谢。

1 个答案:

答案 0 :(得分:2)

在选中登录状态后,在javascript中删除“login()”调用,以便登录弹出窗口不会出现:

// Additional init code here
FB.getLoginStatus(function(response) {
    if (response.status === 'connected') {
        // connected
        replace_login();
        FB.api('/me', function(response) {
            console.log('Good to see you, ' + response.name + '.');
            alert('Good to see you, ' + response.name + '.');
        });
    }
});

添加一个按钮(理想情况下使用CSS设置样式):

<button onclick="login();">Login with Facebook</button>

注意:如果用户已登录,则该按钮可能被javascript隐藏(或者如果未登录则添加)。