进行页面刷新时不调用FB.getLoginStatus(Facebook Javascript SDK)
FB.getLoginStatus is not called when doing a page refresh (Facebook Javascript SDK)
我正在尝试使用他们的Javascript SDK实现一个与用户的Facebook配置文件连接的网页。根据他们的初始文件:
<body>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({appId: '[my-appid]', status: true, cookie: true, xfbml: true});
//Check if user is logged-in to facebook:
FB.getLoginStatus(function(response) {
if (response.session) {
// Here I use some FB.api functions
// and get some data I need about the user's facebook profile,
// and make same changes to the document html accordingly...
}
});
};
(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
</script>
FB.getLoginStatus函数是在FB.init之后编写的,正如他们建议的那样。当我第一次加载页面时,一切都正常。但是,如果我点击刷新(F5)-则永远不会调用FB.getLoginStatus!因此不收集所需的信息。如果我在FB.init后面放一个"警报",它会起作用,我会看到的。如果我在FB.getLoginStatus中放入"alert",则它不起作用。如果我执行"无缓存刷新"(使用Ctrl-F5而不是F5),那么一切都可以工作。
为什么?我怎样才能使它正常工作?
谢谢。
我在试图解决这个问题时遇到了同样的问题。FB.init是异步的,警报会导致足够的延迟来初始化所有内容。FB.getLoginStatus很可能被调用,但正在出错。您在错误控制台中看到任何错误吗?您可能会看到关于在初始化之前调用FB.getLoginStatus的错误。
另一种可能性是xfbml设置为true。Facebook有时似乎会进行双重初始化,导致您对init的调用失败。尝试将xfbml设置为false。如果需要在页面上渲染FBML,请渲染特定元素。
FB.XFBML.parse(document.getElementById('idOfElement'));
问题不在于"FB.getLoginStatus从不被调用"。您的代码调用FB.getLoginStats()。它从不调用响应函数。
打开另一个选项卡,转到facebook.com。如果你的浏览器登录到了facebook,请尝试注销,然后尝试重现问题。
如果你的浏览器作为测试帐户登录到facebook,你可能会遇到这个问题。或者,一个帐户没有权限查看处于沙箱模式的应用程序。注销facebook应该可以解决这些情况下的问题。
我在firefox中看到过这个问题,当它发生时,控制台中没有错误。
这是一个很长的机会,但我遇到了同样的竞争条件,因为我在客户端模板渲染过程中无意中替换了fb-root
div。确保这个div在页面加载时存在,并且没有被任何其他代码触及。
遇到了同样的问题,fbAsyncInit以及其中的getLoginStatus在我按下ctrl+F5时没有被调用经过大量调试,我发现问题在于我没有按照Facebook示例所示的正确顺序使用javascript-sdk代码:https://developers.facebook.com/docs/facebook-login/web我在页面的页眉中有fb根div和加载sdk的代码,然后在页脚中调用fbAsync方法。当我把所有东西放在一起时,问题得到了解决:
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId : '<?php echo $appID; ?>',
cookie : true,
xfbml : true,
version : 'v2.8'
});
FB.getLoginStatus(function(response) {
checkstatus(response);
});
};
/// Load the SDK asynchronously
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
- FB.getLoginStatus完成后,我想返回一个信息数组
- FB.getLoginStatus在第二次点击时响应(response.status=connected)
- getLoginStatus在任意站点上
- Facebook标签/页面身份验证问题:getLoginStatus总是返回not_authorized
- FB.getLoginStatus对我有用,但对我的测试人员不起作用
- Facebook Javascript SDK getLoginStatus 返回未知(完全不一致)
- fb.getloginstatus在注销后未启动
- 当chrome中禁用第三方cookie时,FB.getLoginStatus不会返回正确的状态
- facebookjs-sdk取消授权应用程序仍然在FB.getLoginStatus中连接
- FB.getLoginStatus始终返回status='未知'
- Facebook FB.getLoginStatus在IE 7中未返回
- 为什么这里需要FB.getLoginStatus
- FB.getLoginStatus需要很长时间才能响应
- FB.getLoginStatus在触发前需要页面刷新
- Facebook Javascript SDK getLoginStatus无效响应
- Facebook Connect FB.getLoginStatus issues ~ JS SDK
- 使用getLoginStatus触发Js重定向
- 在调用FB.init()之前调用FB.getLoginStatus().疯了
- FB.如果用户没有登录到Facebook, getLoginStatus不会触发
- FB.getLoginStatus() not working