Javascript FaceBook IFrame应用程序:getLoginStatus仅在Internet Explorer中失败
我有一个非常简单的facebook IFrame应用程序,可以检查当前用户是否登录facebook。如果他们没有登录,我等待1秒钟,然后打开登录对话框提示他们登录。 当我在Firefox和Chrome上运行我的应用程序时,这一切都非常有效。但当我在Internet Explorer中运行它时,Javascript函数isLoggedIn()在我使用该行后失败/中断Javascript FaceBook IFrame应用程序:getLoginStatus仅在Internet Explorer中失败,javascript,facebook,facebook-graph-api,Javascript,Facebook,Facebook Graph Api,我有一个非常简单的facebook IFrame应用程序,可以检查当前用户是否登录facebook。如果他们没有登录,我等待1秒钟,然后打开登录对话框提示他们登录。 当我在Firefox和Chrome上运行我的应用程序时,这一切都非常有效。但当我在Internet Explorer中运行它时,Javascript函数isLoggedIn()在我使用该行后失败/中断 FB.getLoginStatus( function(response) { 你认为为什么会发生这种情况&你知道我如何解决这个问
FB.getLoginStatus( function(response) {
你认为为什么会发生这种情况&你知道我如何解决这个问题吗?PS:我正在使用facebook Graph API的Javascript SDK
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>IFRame Test</title>
<script type="text/javascript">
function loginUser()
{
alert( "Running loginUser()" );
FB.login( function(response) {
if (response.session)
{
if (response.perms)
{
// user is logged in and granted some permissions.
// perms is a comma separated list of granted permissions
alert( "With perm" );
}
else
{
// user is logged in, but did not grant any permissions
alert( "logged in" );
}
}
else
{
// user is not logged in
alert( "Not logged in" );
}
}, {perms:'read_stream,publish_stream,offline_access'}); // these are the permissions we ask for
alert( "Ending loginUser()" );
}
function isLoggedIn()
{
alert("About to Run");
FB.getLoginStatus( function(response) {
alert( "Running isLoggedIn()" ); // ERROR HERE This line never executes in Internet Explorer
alert( response.status );
if ( response.status == "unknown" )
{
setTimeout( "loginUser()", 1000 );
}
else if ( response.status == "notConnected" )
{
// We dont have permissions but the user is logged in
setTimeout( "loginUser()", 1000 ); // ask for permsissions
}
else if ( response.status == "connected" )
{
// User is logged in & has given my app permissions
}
else { alert( "Weird case" ); }
});
}
</script>
</head>
<body>
<h1>IFRame Test</h1>
<p><fb:login-button autologoutlink="true"></fb:login-button></p>
<p><fb:like></fb:like></p>
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({appId: '172889292760575', status: true, cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement('script');
e.type = 'text/javascript';
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
alert( "CONNECTING" );
</script>
<div>
<a href="javascript:isLoggedIn()">ABCD</p>
</div>
<script type="text/javascript">
alert( "javascriptInner" );
isLoggedIn();
</script>
</body>
</html>
IFRame测试
函数loginUser()
{
警报(“正在运行loginUser()”;
FB.登录(功能(响应){
if(response.session)
{
if(response.perms)
{
//用户已登录并被授予某些权限。
//perms是以逗号分隔的已授予权限列表
警惕(“烫发”);
}
其他的
{
//用户已登录,但未授予任何权限
警报(“登录”);
}
}
其他的
{
//用户未登录
警报(“未登录”);
}
},{perms:'read_stream,publish_stream,offline_access'})//这些是我们要求的权限
警报(“结束登录用户()”;
}
函数isLoggedIn()
{
警报(“即将运行”);
FB.getLoginStatus(函数(响应){
警报(“正在运行isLoggedIn()”;//此处出错此行从未在Internet Explorer中执行
警报(响应状态);
如果(response.status==“未知”)
{
setTimeout(“loginUser()”,1000);
}
else if(response.status==“notConnected”)
{
//我们没有权限,但用户已登录
setTimeout(“loginUser()”,1000);//请求权限
}
else if(response.status==“已连接”)
{
//用户已登录并已授予我的应用权限
}
否则{alert(“怪异的情况”);}
});
}
IFRame测试
window.fbAsyninit=函数(){
FB.init({appId:'172889292760575',状态:true,cookie:true,
xfbml:true});
};
(功能(){
var e=document.createElement('script');
e、 类型='text/javascript';
e、 src=document.location.protocol+
“//connect.facebook.net/en_US/all.js”;
e、 异步=真;
document.getElementById('fb-root').appendChild(e);
}());
警报(“连接”);
ABCD
警报(“javascriptInner”);
isLoggedIn();
不确定这是否有帮助,但请尝试使用:
<script src="http://connect.facebook.net/en_US/all.js"></script>
而不是
window.fbAsyncInit = function() {
FB.init({appId: '172889292760575', status: true, cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement('script');
e.type = 'text/javascript';
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
因为当您尝试使用FB时,它可能尚未定义,所以不确定这是否有帮助,但请尝试使用:
<script src="http://connect.facebook.net/en_US/all.js"></script>
而不是
window.fbAsyncInit = function() {
FB.init({appId: '172889292760575', status: true, cookie: true,
xfbml: true});
};
(function() {
var e = document.createElement('script');
e.type = 'text/javascript';
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
因为FB在您尝试使用它时可能尚未定义