0

私を助けてください。私はこれが非常に単純であることを知っています、しかし私の不運:(

Facebookの公式ドキュメントに従って、自分のサイトでJavaScriptSDKを使用して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>

ありがとう。

4

1 に答える 1

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 によってボタンが非表示になっているはずです。

于 2012-12-22T08:49:44.033 に答える