我正在尝试让 Facebook 登录在我的网站上运行。我有以下 Javascript/AJAX 代码:
var antwoord="";
var message="";
function myFacebookLogin() {
FB.login(function() {
FB.api('/me','GET',{"fields":"id,email,birthday,gender,first_name,last_name"}, function(response) {
antwoord = response;
})
}, {scope:'email,user_birthday'});
$.ajax({
url: '/dev/php/registerfb.php',
type: 'POST',
data: {firstname:antwoord.first_name,lastname:antwoord.last_name,email:antwoord.email,gender:antwoord.gender,date:antwoord.birthdate,id:antwoord.id},
success: function(response) {
console.log(response);
},
error: function(error) {
console.log(error);
}
})
}
问题似乎是 Facebook 在用户登录之前给出响应。这样,即使没有任何响应,AJAX 代码也会被触发。我可能在某个地方犯了一个愚蠢的错误。
最佳答案
是的,没错,ajax 在收到登录响应之前被调用
解决这个问题的一种方法是将 ajax 调用包装在函数中
然后在收到响应后调用该函数
var antwoord="";
var message="";
function myFacebookLogin() {
FB.login(function() {
FB.api('/me', 'GET', {"fields":"id,email,birthday,gender,first_name,last_name"},
function(response) {
antwoord = response;
callTheAjax();
})
}, {scope:'email,user_birthday'});
function callTheAjax() {
$.ajax({
url: '/dev/php/registerfb.php',
type: 'POST',
data: {firstname:antwoord.first_name,lastname:antwoord.last_name,email:antwoord.email,gender:antwoord.gender,date:antwoord.birthdate,id:antwoord.id},
success: function(response) {
console.log(response);
},
error: function(error) {
console.log(error);
}
});
}
}
关于javascript - Facebook 在用户登录之前给出响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42972704/