2011-08-30 287 views
1

我正在使用FB.login(http://developers.facebook.com/docs/reference/javascript/FB.login/)。Safari上的javascript FB.login

FB.init({ 
    appId:<id>, 
    cookie: true, 
    status:true, 
    xfbml: true 
}); 
FB.api("/me", function(user) { 
    if (user==null || user.id==undefined) { 
     $('#left-menu .facebook-login').show(); 
    } else { 
     THIS.user = user; 
     $('#left-menu .facebook-loggedin').show(); 
    } 
}); 

$('#left-menu .fblogin').click(function(){ 
    FB.login(function(resp) { 
     if (resp.session) window.location.reload(); 
    }); 
}); 

此代码在Firefox和IE8中完美工作。当用户登录时,用户对象在重新加载后被拾取。然而,这并不在Safari 5

在Safari工作,登录后并重新加载,当我做FB.api(...)里面的代码调试,用户对象说

消息:“必须使用活动访问令牌来查询有关当前用户的信息。“ 键入:“OAuthException”。

当我尝试再次登录按钮时,调试控制台显示“FB.login()在用户已连接时调用”。

此代码纯粹是客户端。此登录代码没有服务器端参与。

任何解决方法?

===================

已解决。当“xfbml:true”被删除时,它在Safari上运行...不要问我为什么。

+0

这不是重复的。我的登录代码纯粹是客户端。根本没有服务器参与。 – real

回答

2

也许你忘了在你的元素上指定XFBML命名空间?

<html xmlns:fb="http://www.facebook.com/2008/fbml"> 

这是为了能够解析XFBML标签所必需的。