Я пытаюсь зайти на сайт через 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?