安全浏览不要在Facebook页面上为粉丝/非粉丝显示不同的内容


Secure Browsing don't show different content for Fans/Non-Fans on a Facebook Page

我在我的Facebook页面上使用以下代码来检查用户是否是FAN或NOT FAN。之后,用户得到不同的内容。它工作得很好,但如果我在Facebook上使用安全浏览,我总是看到只是:"你还不喜欢这个页面。"

我使用ssl代理从我的网站托管。你知道为什么它在安全浏览时不起作用吗?

<?php
require_once 'facebook-php-sdk/src/facebook.php';
// Create our Application instance.
$facebook = new Facebook(array(
  'appId' => 'X',
  'secret' => 'X',
  'cookie' => true,
));
$signed_request = $facebook->getSignedRequest();
$like_status = $signed_request["page"]["liked"];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>zukundo</title>
<link rel="stylesheet" href="css/blueprint/screen.css" type="text/css" media="screen, projection">
</head>
<body>
<?php 
if ($like_status) {
    echo "You like this page.";
} else {
    echo "You like this page not yet.";
  }
?>
</body>
</html>

我假设你的应用程序是一个选项卡应用程序,而不是一个画布应用程序。

下面是它的工作原理:

  • facebook页面将在iframe中加载你的应用程序,POST参数"signed_request"包含一个加密的JSON对象,使用你的应用程序secret进行解密。
  • 这个JSON对象包含当前用户是否是该页的粉丝的信息。

如果您正在使用SSL代理,则有可能该代理正在接收POST参数,但随后没有将其传播到您的应用程序。

在这种情况下,你的应用程序将无法从facebook接收任何信息,所以你将无法知道用户是否是粉丝(至少,直到他授予你访问他的数据的权限,所以你可以使用API检查)

要解决这个问题,您需要为您的域购买并安装SSL证书。goaddy.com似乎是最便宜的。