javascript - érték változó lekérése fb.api kívül callback használatával
Ismerem az ajax és a visszatérési változók problémáját, olvastam erről a StackOverflow-n, tudom, hogy visszahívási függvényt kell használnom, de az én esetemben ez nem működött, természetesen valamit rosszul csinálok
A kódom ez:
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;
}
);
};
Válasz #1
Nem térhetsz vissza csak az értékkel, mert aszinkron. Próbáld ezt:
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();
Válasz #2
Tökéletes, ez az a példa, ami tökéletesen működik:
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)
})
}
