Вы можете проверить, отправлен ли в запросе параметр signed_request. Если приложение открыто внутри facebook, то signed_request существует.
Но есть еще одна проблема.
Вы должны проверить, является ли подписанный_запрос допустимым, и для этого вы можете использовать метод parse_signed_request.
публичная функция parse_signed_request($signed_request, $secret) { список($encoded_sig, $payload) = взорвать('.', $signed_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 "‹ script type='text/javascript' >top.location.href = '$this->loginUrl'; ‹ /script >"; Или найдите способ перенаправить с php. (В старом php sdk был метод перенаправления)
person
Aleksandar
schedule
11.07.2011