2011-08-30 415 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標籤所必需的。