Php Facebook-Like-Gate-Like_状态为空

Php Facebook-Like-Gate-Like_状态为空,php,Php,所以基本上,我试图让一个like gate工作,但是$like_状态变量永远不会改变,所以我改变为like内容的条件永远不会工作。有人知道为什么这永远不会改变吗?已将我的应用程序添加到facebook上的页面选项卡,它会获取所有其他变量$page\u id、$page\u admin、$country和$locale,但不会获取$like\u status 谢谢你,查理 请参阅下面的代码 <?php enter code here require_once('AppInfo.p

所以基本上,我试图让一个like gate工作,但是$like_状态变量永远不会改变,所以我改变为like内容的条件永远不会工作。有人知道为什么这永远不会改变吗?已将我的应用程序添加到facebook上的页面选项卡,它会获取所有其他变量$page\u id、$page\u admin、$country和$locale,但不会获取$like\u status

谢谢你,查理

请参阅下面的代码

<?php

    enter code here

require_once('AppInfo.php');

// Enforce https on production
if (substr(AppInfo::getUrl(), 0, 8) != 'https://' && $_SERVER['REMOTE_ADDR'] != '127.0.0.1') {
  header('Location: https://'. $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
  exit();
}

// This provides access to helper functions defined in 'utils.php'
require_once('utils.php');


require 'includes/facebook.php';


// Create our Application instance.
$facebook = new Facebook(array(
  'appId'  => AppInfo::appID(),
  'secret' => AppInfo::appSecret(),
  'cookie' => true
));

$signed_request = $facebook->getSignedRequest();

$page_id = $signed_request["page"]["id"];
$page_admin = $signed_request["page"]["admin"];
$like_status = $signed_request["page"]["liked"];
$country = $signed_request["user"]["country"];
$locale = $signed_request["user"]["locale"];

echo "<br>page id = $page_id";
echo "<br>page admin = $page_admin";
echo "<br>like status = $like_status";
echo "<br>country = $country";
echo "<br>locale = $locale";

function grokSignedRequest() 
{
    if (isset($_REQUEST['signed_request'])) 
    {
      $encoded_sig = null;
      $payload = null;
      list($encoded_sig, $payload) = explode('.', $_REQUEST['signed_request'], 2);
      $sig = base64_decode(strtr($encoded_sig, '-_', '+/'));
      $data = json_decode(base64_decode(strtr($payload, '-_', '+/'), true));
      return $data;
    }
    return false;
}



// call the function to parse the signed request
$sr_data = grokSignedRequest();



// check like status
if ($sr_data->page->liked==1) 
{
    include ('includes/index2.php');
} 

else
{
  include ('includes/index1.php');
}

?>

如果您在选项卡页面上运行PHP代码,则可能实际存在
like_status
,但设置为0(零)。因此,
echo
语句似乎没有为
$like_status
输出任何内容,但实际上,它的值为零。要证明这一点,请尝试以下代码:

if ($like_status == 0)
    echo "it's zero";
else 
    echo "it's not zero";

编辑:对不起,我没有看到@robbie在问题的评论中解决了这个问题

用户必须从页面选项卡到达应用程序,并且:

与画布页面一样,在用户授权您的应用之前,您不会在签名的_请求中收到应用可访问的所有用户信息


您是否获得任何其他签名请求变量?打印($signed_request)并查看它会给您带来什么。你能把它添加到你的问题中吗?@Robbie这是输出的内容:
page id=page admin=like status=country=gb locale=en_gb
因此只检索国家和地区基本上将我的应用程序添加到页面选项卡中,我接收除like_status之外的所有变量,like_status由于某些原因仍然为空我的下一个问题,你必须把它记在账单上才能工作。你现在喜欢这个页面了吗?