Javascript FB.getLoginStatus需要在启动前刷新页面
我有一个Facebook页面标签应用程序,在页面刷新之前无法正确加载。我已经试着解决这个问题一个多星期了,现在已经到了无计可施的地步 代码如下:Javascript FB.getLoginStatus需要在启动前刷新页面,javascript,facebook,sdk,Javascript,Facebook,Sdk,我有一个Facebook页面标签应用程序,在页面刷新之前无法正确加载。我已经试着解决这个问题一个多星期了,现在已经到了无计可施的地步 代码如下: <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script src="https:////connect.facebook.net/en_US/all.js"&
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script src="https:////connect.facebook.net/en_US/all.js"></script>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '***************', // App ID
channelURL : '//www.********.com/**********/channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
oauth : true, // enable OAuth 2.0
xfbml : true // parse XFBML
});
// Additional initialization code here
};
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
</script>
<script type="text/javascript">
$(document).ready(function(){
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
//User Logged In
}
else if (response.status === 'not_authorized') {
//Log User Into App
}
else
{
top.location = "http://www.facebook.com";
}
});
});
</script>
window.fbAsyninit=函数(){
FB.init({
appId:“****************”,//应用程序ID
channelURL:'//www.*********.com/************/channel.html',//频道文件
状态:true,//检查登录状态
cookie:true,//启用cookie以允许服务器访问会话
oauth:true,//启用oauth 2.0
xfbml:true//解析xfbml
});
//这里有额外的初始化代码
};
//异步加载SDK
(职能(d){
var js,id='facebook jssdk';if(d.getElementById(id)){return;}
js=d.createElement('script');js.id=id;js.async=true;
js.src=“//connect.facebook.net/en_US/all.js”;
d、 getElementsByTagName('head')[0].appendChild(js);
}(文件);
$(文档).ready(函数(){
FB.getLoginStatus(函数(响应){
如果(response.status===“已连接”){
//用户登录
}
else if(response.status===“未授权”){
//将用户登录到应用程序
}
其他的
{
top.location=”http://www.facebook.com";
}
});
});
就像我说的,如果在FB.getLoginStatus(函数(响应){
之后立即添加类似alert(“Test”)
的内容,它不会在第一次页面加载时弹出,而是在页面刷新后弹出
有人能帮我指出正确的方向吗
谢谢,
弗雷德如果你还没有试过,你可以这样做
FB.getLoginStatus(function(response) {
if (response.authResponse) {
// logged in and connected user, someone you know
} else {
// no user session available, someone you dont know
}
});
首先,您正在同步和异步加载SDK。请删除同步行。然后,所有与FB相关的行都应位于window.fbAsyninit中。在SDK完全加载之前,您不能订阅事件。您是否尝试在window.load而不是document.ready上执行此操作?我尝试了window.ready和document.ready,两者都有相同的结果。但无论哪种方式都可以正常启动,只是FB.getLoginStatus没有启动。实际上,这可能是执行检查的更好方式,但是…与我的不同之处在于
if(response.authResponse)
在我重新加载页面之前它不会启动,因为FB.getLoginStatus
在重新加载页面之后才会启动。如果你将FB.getLoginStatus移动到window.fbAsyncint内会怎么样呢?你是个救生员。非常感谢!没问题。很高兴能提供帮助。你想删除所有这些吗?window.fbAsyncInit=function(){FB.init({appId:'**************',//App ID channelURL:'//www.*********.com/************/channel.html',//通道文件状态:true,//检查登录状态cookie:true,//启用cookie以允许服务器访问会话oauth:true,//启用oauth 2.0 xfbml:true//parse XFBML});//此处有其他初始化代码};