Facebook PHP SDK Получение срока годности на токене доступа - PullRequest
0 голосов
/ 14 декабря 2011

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

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

Прямо сейчас,в псевдокоде у меня есть

try {
    $permissions = getFBPerms();  # this seems to work fine even with expired tokens
    doFBApiCall(); # this will throw an exception withe expired tokens
}
catch (FacebookApiException $e) {
    var_dump($e); # this usually comes out to expired tokens
}

Я хочу иметь возможность

if (checkFBTokenStatus())
    // do everything with no worries
else 
    gotoFBLoginUrl(); # re-log them in to get new access tokens

Я также хочу чистое решение, которое я могу легко адаптировать в случае, если пользователь изменил пароли, они авторизовалиприложения и т. д. В настоящее время я работаю над этим сообщением в блоге , но мне не нравится, как это работает, и это не имеет смысла.Кроме того, я надеюсь, что они обновили механизм с момента публикации этого блога.Спасибо.

1 Ответ

4 голосов
/ 14 декабря 2011

Что не так с:

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

enter image description here

...