2012-09-20 58 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

相关问题