2012-09-20 93 views
0

如您所知,Facebook在許多國家被過濾,如果我們在頁面中放置了「Like」按鈕,他們將看到一條「ACCESS DENIED」消息互聯網提供商而不是Like按鈕。所以問題是,我可以檢測Facebook是否可以由用戶查看嗎?所以我只顯示Like按鈕,如果用戶有權訪問Facebook並且沒有被過濾。檢測用戶是否可以查看Facebook Like按鈕

感謝

+0

是否用戶真正看到一個「拒絕訪問」消息,而不是隻是沒有看到按鈕?你用什麼代碼來顯示按鈕? – rsp

+0

是的,事情是,我在一個已過濾Facebook的國家,當我使用VPN連接到我的網站時,我可以看到Like按鈕,它工作正常,許多人喜歡我的頁面使用Like按鈕,但當我沒有連接到VPN時,我看到來自我的互聯網提供商的「ACCESS DENIED」消息。我使用的是Facebook Like按鈕生成器:http://developers.facebook.com/docs/reference/plugins/like/ – behz4d

回答

3

測試如果域www.facebook.com是通過加載favicon.ico如果是訪問,顯示的iframe:

<iframe src="http://www.facebook.com/plugins/like.php" id="fbfm" style="display:none"> 
</iframe> 

<script> 
var fbicon = new Image(); 
fbicon.onload = function() { 
    document.getElementById("fbfm").style.display = ""; 
}; 
fbicon.src = "http://www.facebook.com/favicon.ico?" + Math.random(); 
</script> 
+0

智能解決方案,如果它沒有加載,我如何顯示錯誤?在你的代碼中,這將顯示iframe是否被加載,如果它沒有加載,我想顯示一個錯誤,例如:alert('cant connect to facebook'); – behz4d

+1

+1非常有創意的解決方案! :) @ behz4d你可以添加一個'onerror'處理函數,或者檢查'onload'處理函數中圖像的尺寸,因爲我認爲這有時會被打到,無論它是否真的成功了,在這種情況下'width' 'height'將爲0。 –

1

我想你可以設置一個非常小的寬度和高度上類似按鈕的iframe,剛好夠按鈕本身,並希望任何「拒絕訪問」消息有足夠的填充不可見iframe的視口! :)

替代方法可能是「ping」Facebook,如發出AJAX請求並查看響應是什麼。 但願任何來自ISP的阻止響應都會包含一個HTTP 403狀態代碼,或者是合理的,但是如果不是的話,您將不得不刮掉返回的HTML並嘗試確定您是否看到Facebook或錯誤頁面,然後決定是否渲染類似的按鈕。

+0

不可用,因爲它會加載另一個頁面而不是Like按鈕,在該頁面中,還有一個JavaScript將用戶重定向到另一個頁面,這是因爲我需要設法不顯示Like按鈕,否則「ACCESS DENIED」消息不是那麼有害...關於ping,我只是查了一下,我可以ping它通常並沒有403狀態代碼 – behz4d

+0

該死的,值得一試。我的下一個建議是服務器端代理,但這不在這個問題的範圍之內。 –

0

使用Facebook的JavaScript庫:http://developers.facebook.com/docs/reference/javascript/

,並使用FB.getLoginStatus(...)函數來檢查並決定要你的應用程序做什麼。如果他們已經登錄或不登錄(connectednot_authorized),那麼他們登錄到Facebook,你可以顯示你喜歡的按鈕。如果狀態是unknown他們還沒有登錄,但可以看到Facebook。

如果facebook腳本沒有加載或返回任何值,那麼facebook可能被阻止,並且您不想顯示您喜歡的按鈕。

注:您還需要創建一個應用程序ID與Facebook鏈接您的JavaScript。

+0

如果用戶沒有嘗試登錄,狀態會是什麼? –

0

我的建議是使用像ShareThisAddThis這樣的服務。有可能它們在您所在的國家沒有被阻止(您可以在使用VPN和不使用VPN之前對其進行測試),並且它們爲您提供了一種優勢,即您的用戶可以與其他可用的門戶上的朋友分享您的網站他們。

對於其他人來說,知道這些服務是否適用於Facebook被封鎖的國家當然會很有趣,因爲其中許多服務不能自行測試。

+0

在我的情況下不可用,我使用「Like」按鈕來解鎖內容,我創建了一個帶有Facebook的APP,我解鎖了內容,而用戶「喜歡」我的頁面,使用上述服務將會毀掉整個事物...無論如何感謝 – behz4d

相關問題