Get variable value outside fb.api with callback

I know the problem with ajax and return variables, I read about it in stackoverflow, I know that I need to use the callback function, but in my case it did not work, of course, I'm doing something wrong

My code is:

var id_user=get_id_user_login();//undefined?????????? function get_id_user_login(){ FB.api( '/me', {fields:'id'}, function(response){//callback console.log(response.id);//OK return response.id; } ); }; 
+6
source share
2 answers

You cannot just return a value because it is asynchronous. Try the following:

 function customFunction(id) { console.log(id); } function get_id_user_login(){ FB.api( '/me', {fields:'id'}, function(response){ customFunction(response.id); } ); }; get_id_user_login(); 
+7
source

Great, this is an example that works great:

 function mostrarInvitaciones(){ FB.login(function(response) { var object = { method: 'apprequests', message: 'Message Txt', filters: ['app_non_users'], max_recipients: '1', redirect_uri: 'here the url app' }; // Function callback for get the values, because the Fb.api is async. function callback(response){ function obtenerDatosLoginUsuario(id, name) { //console.log('Id Usuario desde custom: '+id); //console.log('Nombre usuario desde custom: '+name); document.getElementById('miid').innerHTML = id; document.getElementById('minombre').innerHTML = name; } function obtenerDatosAmigo(id, name) { //console.log('Id Amigo desde custom: '+id); //console.log('Nombre Amigo desde custom: '+name); document.getElementById('idamigo').innerHTML = id; document.getElementById('nombreamigo').innerHTML = name; } // Datos del Login Usuario function datosLoginUsuario(){ FB.api('/me',{fields: 'name'}, function(response) { //console.log(response.name); //console.log(response); obtenerDatosLoginUsuario(response.id,response.name); }); } // Datos del amigo seleccionado function datosAmigoInvitado(){ FB.api('/'+ response.to, function(response) { //console.log(response.id); //console.log(response.name); obtenerDatosAmigo(response.id,response.name); }); } // Call the function datosLoginUsuario(); datosAmigoInvitado(); }; // Facebook UI FB.ui(object, callback) }) 

}

-1
source

All Articles