0

したがって、基本的にはいいねゲートを機能させようとしていますが、 $like_status 変数は変更されないため、いいねされたコンテンツに変更する条件は機能しません。これが変わらない理由を誰か知っていますか?Facebook のページ タブにアプリを追加すると、他のすべての変数 $page_id、$page_admin、$country、$locale が取得されますが、$like_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');
}

?>
4

2 に答える 2

1

PHPコードをタブページで実行している場合は、like_statusおそらく実際に存在しますが、値0(ゼロ)に設定されています。したがって、echoステートメントに対して何も出力していないように見えます$like_statusが、実際には値はゼロです。これを証明するには、次のようなコードを試してください。

if ($like_status == 0)
    echo "it's zero";
else 
    echo "it's not zero";
于 2012-07-18T01:36:26.910 に答える
0

編集:申し訳ありませんが、質問のコメントで@robbieがこれを解決したことを知りませんでした

ユーザーはページ タブからアプリにアクセスする必要があります。

キャンバス ページと同様に、ユーザーがアプリを承認するまで、signed_request でアプリにアクセスできるすべてのユーザー情報を受け取ることはありません。

https://developers.facebook.com/docs/appsonfacebook/pagetabs/#integrating

于 2014-05-26T12:06:30.310 に答える