Вы можете проверить, есть ли в подписанном параметре подписанный запрос.
Если приложение открыто внутри 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 был метод перенаправления)