Facebook Логин: без перенаправления, белая страница во всплывающем окне - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть рабочая процедура Facebook-Login с использованием PHP SDK.Теперь Facebook требует, чтобы я обновил свой вход в систему, поскольку я, очевидно, «нарушаю Политики платформы Facebook».В соответствии с ними, моя «кнопка входа в систему неправильно ссылается на Facebook».Они предлагают: «Чтобы решить эту проблему, вы всегда должны использовать наш официальный SDK для входа».Я подозреваю (но не знаю наверняка), что это потому, что вход в систему открывается не во всплывающем окне, а в новом окне с помощью метода PHP SDK getLoginUrl ().Таким образом, я пытаюсь обновить свой поток входа в Facebook.

При попытке объединить Javascript SDK (для отображения официальной кнопки и всплывающего окна) с PHP SDK (для обработки ответов) я используюследующий подход (Источник: https://developers.facebook.com/docs/php/howto/example_access_token_from_javascript)

<html>
<body>

<p><a href="#" onClick="logInWithFacebook()">Log In with the JavaScript SDK</a></p>

<script>
  logInWithFacebook = function() {
    FB.login(function(response) {
      if (response.authResponse) {
        alert('You are logged in &amp; cookie set!');
        // Now you can redirect the user or do an AJAX request to
        // a PHP script that grabs the signed request from the cookie.
      } else {
        alert('User cancelled login or did not fully authorize.');
      }
    });
    return false;
  };
  window.fbAsyncInit = function() {
    FB.init({
      appId: 'your-app-id',
      cookie: true, // This is important, it's not enabled by default
      version: 'v3.2'
    });
  };

  (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'));
</script>
</body>
</html>

При нажатии кнопки входа в систему, как и ожидалось, появится всплывающее окно для входа в систему. Но ...

  • ... прежде чем я даже введу свои учетные данные FB, код предупреждает: «Пользователь отменил вход или не полностью авторизовался».

  • ... после ввода моих учетных данных всплывающее окно остается открытымпустая белая страница.

  • ... когда я нажимаю кнопку, когда уже вошел в Facebook, я вижу только пустую белую страницу во всплывающем окне.

  • ... перенаправления нет (что, я полагаю, должно быть обработано в if (response.authResponse) части)

...