Estoy tratando de hacer que el inicio de sesión de Facebook funcione en mi sitio web. Tengo el siguiente código 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); } }) }El problema parece ser que Facebook da una respuesta antes de que el usuario haya iniciado sesión. De esa manera, el código AJAX se activa cuando ni siquiera hay una respuesta. Probablemente cometí un error tonto en alguna parte.
Sí, así es, se llama a ajax antes de recibir la respuesta de inicio de sesión.
una forma de resolver esto es envolver la llamada ajax en una función
luego llame a la función después de recibir la respuesta
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); } }); } }