【问题标题】:Make Facebook API call object public - object undefined at the moment将 Facebook API 调用对象公开 - 目前未定义对象
【发布时间】:2011-12-14 10:09:45
【问题描述】:

我是 jQuery/javascript 的新手,正在努力使“userData”对象公开可用。 Facebook 通话工作正常。在 Facebook 调用中,控制台按照我想要的方式记录“userData”对象。但是,我不知道如何使该对象公开可用,因此我可以重复使用它。目前的控制台日志报告未定义“userData”。有人知道我在做什么错吗?提前致谢! 罗恩

FB.api('/me?fields=id,first_name,last_name,picture', function(userProfile) {
  var userData = {  
    first_name  :   userProfile.first_name, 
    last_name   :   userProfile.last_name,
    userid      :   userProfile.id,
    picture     :   userProfile.picture 
 };             

 return userData;
});
console.log(userData);

【问题讨论】:

    标签: jquery facebook api object


    【解决方案1】:

    就是你的 userData 前面的 var 关键字在回调函数中限定了它的范围。将其分配给全局变量,您可以在全局范围内使用它。不是我实际推荐的构建系统的方式,但它对调试很有用。

    var globalUserData;
    
    FB.api('/me?fields=id,first_name,last_name,picture', function(userProfile) {
        globalUserData = {  
          first_name  :   userProfile.first_name, 
          last_name   :   userProfile.last_name,
          userid      :   userProfile.id,
          picture     :   userProfile.picture 
        };
    
        console.log(globalUserData);
        // do more stuff with the user data here.
    });
    

    另请注意,console.log 在您启动 FB API 调用后立即运行,这将在它完成并触发回调之前很久。

    【讨论】:

    • 感谢您的反馈。但是,我仍然无法正常工作。我看到你提到了console.log。但是,当我将其替换为以下内容时: $("#showme").prepend(globalUserData.first_name); ...我还是什么都没看到。怎么来的??
    猜你喜欢
    • 2021-11-15
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    相关资源
    最近更新 更多