Как отключить приложение Facebook iframe за пределами Facebook - PullRequest
1 голос
/ 22 июня 2011

Я создал приложение iframe для Facebook и хочу отключить приложение за пределами Facebook, чтобы пользователь не мог открыть приложение по прямой ссылке.Я нашел решение с помощью javascript, но оно мне нужно в PHP.

Я не могу использовать реферер, потому что некоторые пользователи отключили его в своем браузере ...

Ответы [ 2 ]

2 голосов
/ 11 июля 2011

Вы можете проверить, есть ли в подписанном параметре подписанный запрос. Если приложение открыто внутри Facebook, значит существует затребованный подпись.

Но есть еще одна проблема.
Вам следует проверить, действительно ли подписанный_просмотр, и для этого вы можете использовать метод parse_signed_request

общедоступная функция parse_signed_request ($ подписано_квестом, $ секретом) { list ($ encoded_sig, $ payload) = взорваться ('.', $ signature_request, 2);

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

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

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

    return $data;
}

Затем вы можете проверить, существует ли $ data ['user_id'] или он равен зарегистрированному пользователю. Если нет, вы можете перенаправить, как это
echo " top.location.href = '$ this-> loginUrl'; "; Или найти способ перенаправить с php. (В старом php sdk был метод перенаправления)

1 голос
/ 23 июня 2011

Ваш единственный реальный вариант - попытаться каким-либо образом использовать API Facebook и посмотреть, получите ли вы какой-либо ответ.

...