gpt4 book ai didi

javascript - Facebook Javascript API 发送两个请求

转载 作者:行者123 更新时间:2023-11-29 18:27:27 25 4
gpt4 key购买 nike

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

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 并随后通过对话框登录时,我才会得到预期的响应;如果我在已经登录的情况下单击按钮,我会得到:

Two identical requests to the "me" object.

如果我将响应推送到浏览器:

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 处理登录事件(在每次页面加载时触发)的方式有关,但我无法弄清楚我应该如何在应用程序代码中考虑到这一点。

最佳答案

我相信 onlogin 事件会在您加载页面时触发,因为您已登录到 Facebook。然后,当您的用户单击该按钮时,它也会触发该事件。如果您一开始没有登录,则 onlogin 事件不会在加载时触发。

更新:为避免这种情况,除了在基于 FB.getLoginStatus 方法的 if 语句内之外,不要将 getProfile Hook 到 onlogin 事件 http://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/简而言之,如果您已登录,请不要附加 onlogin 事件,否则执行 FB.Event.subscribe http://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe/在 onlogin 事件上,只要用户通过 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.
}
});

关于javascript - Facebook Javascript API 发送两个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11656429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com