在我的应用程序中,我有一个这样的功能:
getProfile = function() {
FB.api('/me', function(response) {
console.log(response);
});
return false;
};
它通过 JavaScript 从 Facebook Graph API 请求“我”对象,当我将它附加到常规链接的 onClick 事件或直接从控制台调用它时,它按预期工作,但是当我尝试从 Facebook 调用它时登录按钮:
<fb:login-button onlogin="getProfile()">
Get Profile
</fb:login-button>
只有当我退出 Facebook 并随后通过对话框登录时,我才会得到预期的响应;如果我在已经登录时单击按钮,我会得到:
如果我将响应推送到浏览器:
getProfile = function() {
FB.api('/me', function(response) {
console.log(response);
var
profile = document.getElementById('profile'),
p = document.createElement('p');
p.innerHTML = response.first_name;
profile.appendChild(p);
});
return false;
};
当然,我得到两个段落,其中有我的名字。
谁能发现我做错了什么?到目前为止,我的谷歌搜索让我确信这与 SDK 处理登录事件的方式(在每次页面加载时触发)有关,但我无法弄清楚我应该如何在应用程序代码中解释这一点。