Я не уверен, что библиотека Facebook на стороне php-сервера проверяет сессии при загрузке. Итак, я хочу знать, есть ли лучший способ убедиться, что у меня действительно есть действительный сеанс FB, а не какие-нибудь взломщики изменили данные $ _COOKIE.
$fb = new Facebook();
if( $fb->session_expires !== 0 && $fb->session_expires < time() ) {
die('bad and/or old session');
}
или лучше проверить идентификатор FB пользователя?
$fb = new Facebook();
if( $fb->user ) {
die('no Facebook User Id given');
}
EDIT:
Хорошо, согласно facebook «Ваша клиентская библиотека должна выполнить все необходимые проверки для вас», используя секретный ключ приложения для md5 всех параметров и проверки хеша Так что если у вас есть сеанс - это действительный сгенерированный FB (хотя он все еще может быть просрочен).
Предположим, что вы входите в приложение для подключения. Затем вы выходите из FB. Если вы загружаете другую страницу в это приложение для подключения, то у FB JS не было никакой возможности изменить файлы cookie, чтобы указать, что вы действительно вышли из системы. А поскольку библиотека PHP на самом деле не вызывает FB для проверки вашего сеанса, она также не может знать, как удалить неправильные значения.
В результате у вас есть действительный набор файлов cookie, отправленных из FB, которые больше не годятся. Поэтому, если вы попытаетесь вызвать метод API, который требует сеанса, ваше приложение выдаст фатальную ошибку.