Отправка формы с запросом POST после входа в Facebook - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь зайти на сайт через Facebook.Я использую Facebook Javascript SDK для получения токена, который отправляется в API с использованием Node.js для входа пользователя.Я использую скрытую форму внутри кнопки, чтобы опубликовать этот токен.Прямо сейчас пользователь нажимает кнопку «Войти через Facebook».Это показывает, что их профиль вошел в систему и собирает свой токен Facebook (помещая его в скрытую форму), затем они нажимают кнопку отправки, которая отправляет свой профиль и токен с POST в API.

Форма выглядит следующим образом:

<form id="fbForm" action="/FBLogin" method="post">
  <fb:login-button 
     scope="public_profile,email" onlogin="checkLoginState();"
     data-max-rows="1" data-size="large" data-button-type="continue_with" 
     data-show-faces="false" data-auto-logout-link="false" data-use-continue-as="true">
  </fb:login-button>
  <input type="hidden" name="fbtokeninput" />

  <button type="submit">Login with Facebook</button>
</form>

Вход в приложение Facebook с использованием javascript sdk выглядит следующим образом (но без строки form.submit()):

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

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

function statusChangeCallback(response) {
console.log('statusChangeCallback');
console.log(response);

if (response.status === 'connected') {
    FB.api('/me', function (response) {
        console.log(response);

        var fbtoken = response.authResponse.accessToken
        document.getElementById('fbtokeninput').value = fbtoken;

        setTimeout(function() {document.getElementById("fbForm").submit();}, 1000);
    });
} else {
    //error message
}

}

Сейчас это работает нормально, но я не хочу, чтобы пользователям приходилось нажимать на вторую кнопку «отправить» для входа в систему.Мой главный вопрос по линии setTimeout(function() {document.getElementById("fbForm").submit();}, 1000);.Это не работает, и обычная строка отправки без задержки тоже не работает.

Как правильно отправить / отправить этот тип формы в API с помощью JavaScript?

1 Ответ

0 голосов
/ 06 февраля 2019

На самом деле у вас нет формы (с полями ввода и так далее), поэтому не пытайтесь отправить ее.Вместо этого просто используйте запрос AJAX POST ( fetch API , axios , ...) для отправки токена на ваш сервер.

...