Что не так с:
try {
$permissions = getFBPerms(); # this seems to work fine even with expired tokens
doFBApiCall(); # this will throw an exception withe expired tokens
// Do whatever you want...
}
catch (FacebookApiException $e) {
gotoFBLoginUrl(); # re-log them in to get new access tokens
}
?
Конечно, вы можете позвонить, например, /me
, чтобы проверить, является ли токен действительным, но этоподразумевает выполнение одного дополнительного вызова перед каждым вызовом API, что не имеет особого смысла ..
Кроме того, я бы не стал полагаться на дату истечения срока действия (токены должны составлять не менее 3 часов с момента создания), поскольку это может быть не так точный .Правильный способ - перехватить исключение и , а затем перенаправить пользователя на страницу входа в систему.
Или, грубым способом, запросить токены, срок действия которых не истек:)
ОБНОВЛЕНИЕ: деавторизованный обратный вызов
Если вы перейдете на панель «Дополнительно» настроек своего приложения, вы найдете поле «Деавторизовать обратный вызов», в которое можно вставить URL-адрес, который проверяется при деавторизации пользователя.ваше приложение.Таким образом, у вас есть определенный способ узнать, удалил ли пользователь ваше приложение.