JS: кнопка входа в Facebook меняет состояние, если я вхожу в facebook.com в другой вкладке - PullRequest
0 голосов
/ 18 января 2019

Моя кнопка входа в Facebook отображается как «Выйти из системы» на моем сайте. Если я открою новую вкладку в браузере, зайду на www.facebook.com и успешно войду в систему, затем вернитесь на вкладку моего веб-сайта и обновите страницу, теперь кнопка входа в систему Facebook отображается как «Вход в систему». Это ожидаемое поведение здесь? Кажется странным, так как я никогда не «нажимал», чтобы войти через Facebook на моем сайте.

function statusChangeCallback(response) {

  if (response && response.authResponse && response.authResponse.accessToken) {

     Cookies.set("facebookToken",response.authResponse.accessToken, { expires: 7 })
  }

  if (response.status === 'connected') {
    Cookies.set("showFacebookProceed", true)
  } else {
    let element = document.getElementById('fb-proceed');
    element.remove()
    Cookies.remove("showFacebookProceed")

  }
}


checkLoginState = function() {
  FB.getLoginStatus(function(response) {
    statusChangeCallback(response);
  });
};


window.fbAsyncInit = function() {
  FB.init({
    appId      : 'REDACTED', 
    cookie     : true,  
    status     : true,                  
    xfbml      : true,  // parse social plugins on this page
    version    : 'v2.8' // use graph api version 2.8
  });
  FB.getLoginStatus(function(response) {
       statusChangeCallback(response);
  });


   FB.Event.subscribe('auth.authResponseChange', function(response) {
        statusChangeCallback(response);
  });



};

// async load of SDK 
(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 = "https://connect.facebook.net/en_US/sdk.js";
  fjs.parentNode.insertBefore(js, fjs);
  }(document, 'script', 'facebook-jssdk'));

}

Моя HTML-кнопка:

 <div 
   class="fb-login-button"
   data-max-rows="1"
   data-width="314"
   data-auto-logout-link="true"
   data-scope="email"
   data-use-continue-as="true"
   data-button-type="login_with"
 /></div>

1 Ответ

0 голосов
/ 18 января 2019

Да. Это ожидаемое поведение.

Facebook SDK использует зарегистрированного пользователя в вашем браузере. Если вы не авторизованы, вам будет предложено войти, иначе нет.

Вы можете попробовать все, что вы сделали, и протестировать:

  1. Выход из Facebook из браузера
  2. Авторизуйтесь, используя кнопку авторизации на вашем сайте

Теперь, если вы зайдете на сайт Facebook, вы войдете в систему как этот пользователь, даже если вы вошли на свой сайт. Так что в обоих случаях происходит одно и то же.

...