Токен доступа немедленно становится недействительным

для нескольких пользователей (может быть, не так уж и мало, учитывая количество связанных писем, которые я получаю) токен доступа, связанный с авторизацией OAUTH, кажется, немедленно аннулируется. Пользователь проходит через обычный процесс авторизации, он принимает разрешения, он перенаправляется на нужную страницу, которая включает токен доступа, но как только мое приложение пытается использовать токен доступа для получения идентификатора пользователя, возникает ошибка вместо:

{"error":{"message":"Error validating access token: Session has expired at unix time 0. The current unix time is 1323939801.","type":"OAuthException"}}

offline_access является частью разрешений. Кроме того, не может быть, что причиной является снятие пользователем авторизации или смена пароля, так как это происходит сразу после принятия авторизации. В моем потоке приложений я уже несколько раз пытаюсь повторить попытку, и из журналов, которые я получаю, я вижу, что ошибка всегда одна и та же: снова проводить пользователя через процесс авторизации бесполезно, так как пользователь снова перенаправляется на страницу с access_token во фрагменте. По-видимому, единственный способ для пользователя решить эту проблему - удалить приложение из списка авторизованных приложений и сделать то же самое снова (если только с n-й попытки оно не заработает, не все пользователи отпишутся, когда все заработает ).

Что может быть причиной этого?


person Mike Bannion    schedule 15.12.2011    source источник
comment
Возникла та же проблема с Facebook iOS SDK. Получение ошибок для токенов с offline_access сразу после авторизации. Некоторые жетоны работают нормально через минуту.   -  person Andrey Chernih    schedule 09.01.2012


Ответы (2)


Кажется, я столкнулся с той же проблемой, см. мой вопрос здесь: Сеанс был признан недействительным, поскольку пользователь изменил пароль -> РЕДАКТИРОВАТЬ: я больше не думаю, что это одно и то же, я нашел основную причину этого, см. ответ на этот вопрос .

И еще один вопрос по теме: Как я могу удалить все потенциально кэшированные токены или идентификаторы сеансов на Android?

Какие-нибудь подсказки еще..?

person ylva    schedule 16.12.2011
comment
К сожалению, без понятия, и это продолжает происходить: очень неприятно. - person Mike Bannion; 18.12.2011
comment
Я не знаю ваш код и откуда вы получаете это сообщение об ошибке. Но просто чтобы поделиться своим опытом: при запросе offline_access кажется, что разные SDK facebook устанавливают для параметра «expires» в сеансе разные вещи. Я использую Android и iOS SDK, и для iOS «expires» получает дату 4001-01-01, тогда как в Android «expires» будет установлен на 0. Это, по крайней мере, одурачило меня и заставило меня исправить логику чтобы мое приложение не думало, что срок действия сеанса истек. Может кому поможет.. :) - person ylva; 19.12.2011
comment
Я не использую Facebook SDK: я отправляю прямые запросы Graph, используя классы HttpClient в Android, то есть отправляю простые запросы GET и сам анализирую ответы. Для авторизации я просто перенаправляю пользователей в WAP-версию диалогового окна OAUTH в WebView: я не знаю, устанавливает ли значение срока действия 0, как вы сказали. - person Mike Bannion; 20.12.2011
comment
На самом деле, я считаю, что параметры «expires» никак не связаны с запросом «offline_access», потому что в этом случае срок действия токена никогда не истекает. - person Andrey Chernih; 31.01.2012

Автономный доступ устарел, я бы больше не просил об этом. Вместо этого, по крайней мере, в iOS SDK есть метод обновления.

person Anna Billstrom    schedule 04.06.2012
comment
Мой вопрос восходит к 6 месяцам назад, я не все еще спрашиваю... ;) - person Mike Bannion; 05.06.2012
comment
Я знаю о методе продления, но в моем случае он не работает должным образом (срок жизни токенов не продлевается), и, похоже, то же самое и у многих других людей. Я открыл еще один элемент на StackOverflow и слежу за всеми связанными с этим ошибками, опубликованными другими разработчиками на самой Facebook. - person Mike Bannion; 05.06.2012
comment
Да, просто говорю: я только что внедрил iOS и Android и не сталкивался с проблемами истечения срока действия. Но также и не запрашивая offline_access. - person Anna Billstrom; 06.06.2012