【问题标题】:get value variable outside fb.api with callback使用回调在 fb.api 之外获取值变量
【发布时间】:2012-12-11 14:40:43
【问题描述】:

我知道 ajax 和返回变量的问题,我在 stackoverflow 中读到了这个,我知道我必须使用回调函数,但在我的情况下没有工作,当然我做错了

我的代码是这样的:

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;
           }
     );             
};

【问题讨论】:

    标签: javascript facebook api


    【解决方案1】:

    您不能只返回值,因为它是异步的。试试这个:

    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();
    

    【讨论】:

    • 是的,我真的试过了,非常感谢。我写这个是因为我认为这是非常“意大利面条”,不是吗?如果我写一些这样的函数......但是好吧,看这是唯一的方法......
    • 嗯,这是最好的解决方案。但这当然取决于您的整个项目,当然在更大的项目中看起来会有所不同。如果对您有帮助,请不要忘记接受我的回答:)
    • 如果您可以依赖在响应中传回的 ID,则可以。如果您使用没有像 /{pageId}/ratings 这样的 id 的响应,那么您如何交叉引用它?
    【解决方案2】:

    完美,这是可以正常工作的示例:

    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)
    
    })
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-24
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-23
      相关资源
      最近更新 更多