Вкладка приложения Facebook на фан-странице - PullRequest
0 голосов
/ 26 февраля 2012

Я хочу сделать вкладку приложения на фан-странице. Год назад, используя facebook.php v.2.0, я смог создать приложение и управлять им, но теперь все изменилось, и я не могу понять, как подключиться к API, чтобы проверить, нравится ли фан-страница не. Я использую facebook.php v. 3.1.1, поэтому год назад я бы использовал:

<?php
    require 'facebook.php';
    $app_id = "YOUR APP ID HERE";
    $app_secret = "YOUR SECRET KEY HERE";

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

    $signed_request = $facebook->getSignedRequest();
    $like_status = $signed_request["page"]["liked"];
?>

Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 26 февраля 2012

Просто сделайте это:

<?php
    $secret = ''; // Input the application secret

    function parse_signed_request( $signed_request, $secret ) {
        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);

        if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
            echo 'Unknown algorithm. Expected HMAC-SHA256';
            return null;
        }

        // Check signature
        $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
        if ($sig !== $expected_sig) {
            echo 'Bad Signed JSON signature!';
            return null;
        }
        return $data;
    }

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

    $data = parse_signed_request( $_REQUEST['signed_request'], $secret);
    print_r( $data);
    exit();
?>
1 голос
/ 26 февраля 2012

Вам не нужно использовать getSignedRequest, что-то вроде этого должно работать:

$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);

if (empty($data["page"]["liked"])) {
   //User is not a fan
} else {
  //User is a fan
}
...