JS для входа в Facebook - триггеры FB.Event.subscribe ('auth.login') без кнопки входа в систему

действительно нужна ваша помощь с функцией входа в систему через facebook, которую я пытаюсь реализовать на своем веб-сайте.

По сути, я пытаюсь достичь следующего:

  • если пользователь подтвердил приложение раньше и нажимает кнопку входа в FB на моем веб-сайте они входят на веб-сайт (пользователь веб-сайта учетная запись, связанная с идентификатором пользователя Facebook)

  • , если пользователь не подтвердил приложение ранее, при входе в FB (и подписке на приложение) он перенаправляется на страницу регистрации веб-сайта. Здесь форма предварительно заполнена пользовательскими данными проходя через Facebook, и процесс регистрации становится проще и быстрее.

Я использую приведенный ниже код.

<body>

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

        FB.Event.subscribe('auth.login', function(response) {
              if (response.status === 'connected') {
                    var uid = response.authResponse.userID;
                    var accessToken = response.authResponse.accessToken;

                    if ((parseFloat(uid) == parseInt(uid)) && !isNaN(uid)) {
                        $.ajax({
                            url: '/user_actions/prep_facebook_registration',
                            cache: false,
                            type: 'POST',
                            data: { 'uid': uid, 'token': accessToken },
                            dataType: 'json',
                            success: function(data) {
                                if (data.success=='true') {
                                    if ((typeof(data.redirect) != 'undefined')) {
                                        window.location=data.redirect;
                                    }
                                }
                            }
                        });
                    }
              }
        });

        FB.Event.subscribe('auth.logout', function(response) {
            FB.getLoginStatus(function(res) {
                if (!res.authResponse) {
                    window.location='/access/logout';
                }
            });
        });

        FB.getLoginStatus(function(response) {
          if (response.status === 'connected') {
            var uid = response.authResponse.userID;
            var accessToken = response.authResponse.accessToken;
            //not doing anything so far
          }
        });
      };
            (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/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
      }(document, 'script', 'facebook-jssdk'));
</script>

Кнопка входа находится ниже на веб-сайте:

<div class="fb-login-button" autologoutlink="true" data-show-faces="false" data-width="166" data-max-rows="1" style="position: absolute; top: 5px; right: 0;" scope="email"></div>

Проблема в том, что FB.Event.subscribe ('auth.login') срабатывает не только при нажатии кнопки входа в FB, но и в том случае, если пользователь вошел в Facebook и только после этого заходит на мой сайт. Это вызывает перенаправление на страницу регистрации или перезагрузку текущей страницы, даже если пользователь не нажал кнопку входа в систему!

'/ user_actions / prepare_facebook_registration' содержит сценарий, который проверяет, должен ли участник быть перенаправлен на страницу регистрации или должен войти в систему с локальной учетной записью. Он возвращает URL-адрес для перенаправления.

Что я делаю не так? Как мне избежать FB.Event.subscribe ('auth.login ') запускается вне нажатия кнопки входа в систему?

10
задан Aidas 20 February 2012 в 12:43
поделиться