使Facebook API调用对象公共 - 目前尚未定义

时间:2011-10-24 19:37:02

标签: jquery facebook api object

我是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);

1 个答案:

答案 0 :(得分: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.
});

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