我试图让用户登录到与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的?