Регулярный опрос Facebook на предмет аннулирования oauth

Я ищу «правильный» способ регулярного опроса Facebook, чтобы убедиться, что токен oauth пользователя все еще действителен. Я использую Facebook для проверки учетной записи пользователя в моем собственном приложении. Использование ими моего приложения не обязательно приводит к каким-либо вызовам графа Facebook, но мне все равно нужно знать, был ли токен oauth недействительным после того, как они вошли в мое приложение, например. при смене пароля Facebook.

В Facebook есть страница, объясняющая, как обращаться с аннулированием: https://developers.facebook.com/blog/post/2011/05/13/how-to--handle-expired-access-tokens/ У них также есть URL-адрес /me который можно нажать в любое время, чтобы увидеть, действителен ли токен в настоящее время. (например, за Проверьте, недействителен ли токен Ouath) Но что правильно шаблон и частота опроса за пределами первоначального входа пользователя?

Я рассматриваю такое решение, как:

ПЛОХО: Проверяйте действительность токена oauth при каждом запросе к моему приложению. (слишком тяжелый, замедляет каждый запрос, возможно, сводит фейсбук с ума)

ЛУЧШЕ?: Проверять действительность токена oauth, когда пользователь отправляет запрос моему приложению, ЕСЛИ токен oauth не проверялся более X минут.

Это последнее решение кажется правильным, но я не могу найти никаких упоминаний о том, что кто-то еще это делает.

Является ли это лучшей практикой для проверки достоверности oauth? Может ли кто-нибудь указать на документы, относящиеся к этому варианту использования, или подтвердить, что вы сами решили эту проблему?


person Squirrel7    schedule 24.07.2013    source источник


Ответы (1)


Я бы на самом деле предпочел использовать метод, который вы предложили первым. Вам не нужно опрашивать API, чтобы проверить целостность токена. Если вы попытаетесь выполнить вызов API с просроченным токеном, Facebook вернет соответствующее сообщение об ошибке. Просто добавьте отказоустойчивость, чтобы обнаруживать это во всех ваших звонках.

person Max K    schedule 24.07.2013
comment
Чтобы понять, почему это не работает в моем случае, представьте, что мое приложение никогда не вызывает API графа Facebook. Facebook используется исключительно как замена того, чтобы заставить пользователя зарегистрировать еще одну учетную запись для использования моего приложения. Мое приложение может использоваться в течение нескольких часов или даже дней без повторного входа в систему, поэтому мне нужно чаще проверять, действителен ли токен oauth. - person Squirrel7; 25.07.2013
comment
Почему? если вы не выполняете вызовы API, какая разница, что срок действия токена истек? - person Igy; 25.07.2013
comment
Потому что Facebook используется в качестве механизма аутентификации для моего приложения. Если кто-то больше не аутентифицирован для использования моего приложения, мне нужно запретить ему продолжать использовать его. Точно так же, как если вы измените свой пароль Facebook, потому что оставили его в отеле, Facebook перестанет позволять этому гостиничному компьютеру продолжать осквернять вашу учетную запись Facebook. - person Squirrel7; 25.07.2013