Сессия была признана недействительной, потому что пользователь изменил пароль - PullRequest
0 голосов
/ 13 декабря 2011

Реализуя приложение PhoneGap для Android и iOS, приложение использует Facebook Connect и плагин PhoneGap Facebook Connect (https://github.com/davejohnson/phonegap-plugin-facebook-connect).) Несколько дней назад у меня возникли проблемы с access_token, но только на Android, то же самое Сценарий работает на iOS без проблем. Шаг за шагом:

  1. Init facebook. (используя функцию плагина)
  2. Войдите в Facebook. (используя функцию плагина) (запрашивая разрешения: 'email user_birthday publish_stream offline_access')
  3. Сделайте график api call / me, используя возвращенный мне токен.

Шаг 3 возвращает ошибку, и когда я беру URL-адрес, который был вызван, и помещаю его в браузер рабочего стола, он выдает мне сообщение «Сеанс был отменен, поскольку пользователь изменил пароль».

Приложение для песочницы / приложение без песочницы не имеет никакого значения.

Точно такие же шаги в iOS работают отлично.

Я видел много вопросов о SOF и Facebook об этом, но все они касаются того, чтобы позволить пользователю снова выполнить поток аутентификации или что проблема решилась сама собой через несколько дней .... Есть кто-то, кто можете подтвердить, что это действительно ошибка на Facebook? Или есть решение? Или можете объяснить, почему он работает на Android, а не на iOS? Может быть, это может быть связано со мной в iOS, я не использую приложение facebook, но предпочитаю всегда использовать OAuth в браузере?

Спасибо за любые подсказки!

EDIT:

Нашел к другим связанным вопросам, которые, кажется, имеют ту же основную причину, что и моя.

Как удалить все потенциально кэшированные токены или идентификаторы сеансов на Android?

Токен доступа немедленно аннулирован

1 Ответ

1 голос
/ 16 декабря 2011

Хорошо, в конце концов я обнаружил, что основной причиной моей проблемы было то, что SDK для Android и iOS facebook обрабатывают offline_access по-разному, в значении, которое они установили в параметре 'expires' в объекте сеанса.

В iOS для 'expires' будет задана дата, которая будет далеко в будущем (4001-01-01), в то время как в Android 'expires' будет установлена ​​на 0. Это привело к сбою моего сравнения (expired

(тогда в моем случае я всегда делал выход из системы, если сеанс был недействительным, что делало мой токен недействительным для реального при попытке его в браузере впоследствии .. дох ..)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...