2011-11-17 135 views
1

我最近添加Facebook登錄按鈕到我的網站和整合似乎工作正常。我遇到的唯一問題是當我登出Facebook時,「登錄」按鈕沒有顯示出來。有沒有其他人有這個問題?Facebook Javascript SDK:登錄按鈕不顯示

我使用代碼直出的Javascript SDK文檔(https://developers.facebook.com/docs/reference/javascript)的:

<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : 'YOUR_APP_ID', // App ID 
     channelURL : '//WWW.YOUR_DOMAIN.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> 

而且有我的網頁上這個元素:

<div class="fb-login-button" data-show-faces="true" data-width="200" data-max-rows="1">Login with Facebook</div> 

任何人都看到我在這裏的任何問題?

回答

3

測試這個代碼,完全修剪下來的HTML頁面對我來說工作得很好。它顯示登錄按鈕,如果你沒有登錄到Facebook,並顯示你的網站上的朋友,如果你是。也許你的代碼的其他部分是干擾?你可以嘗試用下面的基本HTML嗎?

<html> 
<head> 

</head> 
<body> 

<div id="fb-root"></div> 
<script> 
    var appId = 'YOUR_APP_ID'; 
    var siteRoot = 'YOUR_HOST_NAME'; 

    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : appId, 
     channelURL : '//'+siteRoot+'/channel.html', // Channel File 
     status  : true, 
     cookie  : true, 
     oauth  : true, 
     xfbml  : true 
    }); 
    }; 


    (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> 


<div class="fb-login-button" data-show-faces="true" data-width="200" data-max-rows="1">Login w/ Facebook</div> 

</body> 
</html> 

密切相關的 - 如果你想顯示的東西比在用戶的情況下,默認的不同被登錄,您可以檢查與登錄狀態:

FB.getLoginStatus 

或者,如果你想做一些你的用戶登錄後可以綁定到登錄事件有:

FB.Event.subscribe('auth.login', function() { 
     console.log('Hello world!'); 
}); 
+0

我試着運行您提供的代碼,並且遇到了與我的實現相同的行爲。 也許這是一個應用程序設置的東西? 雖然我得到一個JS異常,但我不確定它是否有關係。我在控制檯中看到這個: 未捕獲異常:錯誤:拒絕獲取屬性的權限Proxy.InstallTrigger – Brandon

+0

如果您收到JavaScript錯誤,那肯定是個問題。不幸的是,Facebook有我曾經使用過的最不有幫助的錯誤消息。如果它不是代碼,那麼這裏唯一的其他變量就是你所說的應用程序設置,也可能是你的瀏覽器。我聽說過FF8的一些FB集成問題 - 你在用什麼瀏覽器?除此之外,我建議玩你的應用程序設置。 –

1

它已經有一段時間,但我懷疑你看到這一點,因爲你的應用程序在「沙盒」模式。檢查您的設置。