0

如您所知,Facebook 在许多国家/地区都被过滤,如果我们在我们的页面中放置“Like”按钮,他们将看到来自其互联网提供商的“ACCESS DENIED”消息,而不是“Like”按钮。所以问题是,我可以检测用户是否可以查看 Facebook 吗?所以如果用户可以访问 Facebook 并且它没有被过滤,我只会显示 Like 按钮。

谢谢

4

4 回答 4

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>
于 2012-09-20T11:18:29.923 回答
1

我想你可以在类似按钮 iframe 上设置一个非常小的宽度和高度,刚好够按钮本身,并希望任何“访问被拒绝”消息有足够的填充在 iframe 的视口中不可见!:)

另一种方法可能是“ping”Facebook,例如发出 AJAX 请求并查看响应是什么。希望来自 ISP 的任何被阻止的响应都包含 HTTP 403 状态代码或其他合理的内容,但如果不是,您必须抓取返回的 HTML 并尝试自己确定您看到的是 Facebook 还是错误页面,然后决定是否是否呈现类似按钮。

于 2012-09-20T11:09:14.010 回答
0

使用 Facebook javascript 库:http: //developers.facebook.com/docs/reference/javascript/

并使用 FB.getLoginStatus(...) 函数来检查并决定您希望您的应用程序做什么。如果他们已登录或未登录(connectednot_authorized),则他们已登录 facebook,您可以显示您的点赞按钮。如果状态是unknown他们尚未登录但可以看到 Facebook。

如果 facebook 脚本没有加载或返回任何值,那么 facebook 可能被阻止并且您不想显示您的喜欢按钮。

注意:您还需要使用 facebook 创建一个应用程序 ID 以将您的 javascript 链接到。

于 2012-09-20T11:09:23.277 回答
0

我的建议是使用ShareThisAddThis之类的服务。它们有可能不会在您所在的国家/地区被阻止(您可以在使用或不使用 VPN 之前对其进行测试),并且它们为您提供了一个优势,即您的用户可以在其他可用的门户网站上与朋友分享您的网站他们。

对于其他人来说,知道这些服务在 Facebook 被封锁的国家/地区是否可用肯定会很有趣,因为他们中的许多人无法自己测试。

于 2012-09-20T11:13:57.490 回答