Проблема с подписанным запросом в Facebook - PullRequest
2 голосов
/ 18 апреля 2011

Я хочу написать фангейт для своей страницы в фейсбуке, но он не сработал, и я не могу найти никакой помощи в интернете

require 'facebook.php';

$app_id = '16850872653xxxx';
$app_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
'cookie' => true
));

$signed_request = $_REQUEST['signed_request'];

//echo $signed_request;

list($encoded_sig, $payload) = explode('.', $signed_request, 2); 


// decode the data
$sig = base64_url_decode($encoded_sig);
$data = json_decode(base64_url_decode($payload), true);

// check sig
$expected_sig = hash_hmac('sha256', $payload, $app_secret, $raw = true);

function base64_url_decode($input) {
return base64_decode(strtr($input, '-_', '+/'));
}

if($signed_request->page->liked) {
echo "This content is for Fans only!";
} else {
echo "Please click on the Like button to view this tab!";
}

Я использую этот код ... но он просто переходит наgithub, где я скачал facebook.php ....

кто-нибудь видит проблему с этим кодом?

требование просто переходит на github и json_decode не работает ...

1 Ответ

5 голосов
/ 18 апреля 2011

В отправленном вами коде есть несколько ошибок.Это то, что я использую, и оно работает:

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));
      if($data->page->liked) {
          echo "This content is for Fans only!";
        } else {
          echo "Please click on the Like button to view this tab!";
        }
    }

И не публикуйте секретный ключ своего приложения на форуме, пожалуйста, отредактируйте свое сообщение как можно скорее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...