提交表单与Facebook登录后POST请求

问题描述 投票:0回答:1

我试图让用户登录到与Facebook的网站。我使用Facebook的Javascript SDK来获得其发送给使用Node.js的用户登录的API令牌。我用的按钮中的隐藏表单张贴该令牌。现在用户点击“登录与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>

使用JavaScript SDK中的Facebook应用程序登录如下(但没有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);线。这不起作用,只是定期提交线无延迟也不起作用。

你如何正确提交/ POST这种形式的使用JavaScript API的?

javascript facebook facebook-javascript-sdk
1个回答
0
投票

实际上,你鸵鸟政策有一个表单(输入字段和诸如此类的东西),所以鸵鸟政策试图提交一个。相反,只需使用一个AJAX POST请求(fetch APIaxios,...)令牌提交到服务器。

© www.soinside.com 2019 - 2024. All rights reserved.