Facebook Javascript API发送两个请求

Facebook Javascript API发送两个请求,javascript,facebook,facebook-graph-api,facebook-javascript-sdk,Javascript,Facebook,Facebook Graph Api,Facebook Javascript Sdk,在我的应用程序中,我有这样一个函数: getProfile = function() { FB.api('/me', function(response) { console.log(response); }); return false; }; 它通过JavaScript从Facebook Graph API请求“me”对象,当我将其附加到常规链接的onClick事件或直接从控制台调用它时,它会按预期工作,但当我尝试从Facebook登录按钮调用它时: <fb:

在我的应用程序中,我有这样一个函数:

getProfile = function() {
  FB.api('/me', function(response) {
    console.log(response);
  });
  return false;
};
它通过JavaScript从Facebook Graph API请求“me”对象,当我将其附加到常规链接的onClick事件或直接从控制台调用它时,它会按预期工作,但当我尝试从Facebook登录按钮调用它时:

  <fb:login-button onlogin="getProfile()">
    Get Profile
  </fb:login-button>
当然,我有两段写有我名字的文章


谁能看出我做错了什么?到目前为止,我的谷歌搜索让我确信,这与SDK处理登录事件(每次加载页面时都会触发)的方式有关,但我不知道如何在应用程序代码中解释这一点。

我相信,当您加载页面时,会触发onlogin事件,因为您登录了Facebook。然后,当用户单击按钮时,它也会触发事件。如果您没有首先登录,那么onlogin事件不会在加载时触发

更新:为了避免这种情况,只需在基于FB.getLoginStatus方法的if语句内将getProfile挂接到onlogin事件,简单地说,如果您已登录,不要附加onlogin事件,否则,在onlogin事件上执行FB.Event.subscribe,当用户通过XFBML生成的登录按钮登录时,您的方法将运行

FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
  //print the response data into the paragraph here
} else if (response.status === 'not_authorized') {
  // the user is logged in to Facebook, 
  // but has not authenticated your app
  FB.event.subscribe( 'auth.login', function(){
    getProfile();
  });
} else {
  // the user isn't logged in to Facebook.
}
});

我相信当你加载页面时会触发onlogin事件,因为你登录了Facebook。然后,当用户单击按钮时,它也会触发事件。如果您没有首先登录,那么onlogin事件不会在加载时触发

更新:为了避免这种情况,只需在基于FB.getLoginStatus方法的if语句内将getProfile挂接到onlogin事件,简单地说,如果您已登录,不要附加onlogin事件,否则,在onlogin事件上执行FB.Event.subscribe,当用户通过XFBML生成的登录按钮登录时,您的方法将运行

FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
  //print the response data into the paragraph here
} else if (response.status === 'not_authorized') {
  // the user is logged in to Facebook, 
  // but has not authenticated your app
  FB.event.subscribe( 'auth.login', function(){
    getProfile();
  });
} else {
  // the user isn't logged in to Facebook.
}
});