Ошибка при проверке токена доступа: сеанс недействителен, поскольку пользователь вышел из системы

2

Мой код:

 var fbWebContext = FacebookWebContext.Current;
 if (fbWebContext.IsAuthorized())
 {
      var fb = new FacebookWebClient(fbWebContext);
      dynamic result = fb.Get("/me");

      name.Text = result.name;
 }

 dynamic result = fb.Get("/me");

броски:

(OAuthException) Ошибка проверки маркера доступа: сеанс недействителен, поскольку пользователь вышел из системы.

Как мне изменить код для предотвращения этого?

Теги:
exception-handling
facebook
facebook-c#-sdk

3 ответа

2
Лучший ответ

Вы можете запросить расширенное разрешение "offline_access". Это предотвратит это сообщение, и пользователь не будет входить в систему каждый раз.

  • 0
    offline_access устарел и будет удален к маю 2012 г.
  • 0
    @ Wize, есть ли альтернатива?
Показать ещё 1 комментарий
2

Вы действительно не можете этого предотвратить, вам просто нужно поймать исключение и справиться с ним. Хорошо Хорошо, что вы можете предотвратить это, я думаю, на стороне клиента, выполнив некоторые эквивалентные вызовы из SDK FB Javascript, чтобы обнаружить плохой сеанс (истек, вышел из системы, пользователь изменил свой пароль и т.д.) И заставил их снова войти в систему на клиент перед вызовом кода на стороне сервера.

Если вы посмотрите на исходный код Facebook С# SDK, вы увидите, что IsAuthorized() = IsAuthenticated(). Все IsAuthenticated делает проверку, чтобы увидеть, есть ли у вас сеанс, и что время истечения сеанса не прошло. Сессия могла быть признана недействительной при выходе пользователя из системы без ведома сервера.

Существуют и другие исключения OAuth Facebook, которые вы можете получить здесь. Лучше всего обернуть вышеуказанный код в try/catch и обработать исключения, повторно предложив пользователю войти в систему и получить новый сеанс с ними.

0

Как насчет объекта CanvasAnthorizer? Не гарантирует ли этот объект, что пользователь зарегистрирован и имеет правильные разрешения?

  • 0
    Пользователь по-прежнему может выйти из FB на другой вкладке браузера и, таким образом, сделать недействительным токен доступа на вкладке, используемой приложением. Я проверил этот сценарий, и он приводит к исключению OAuth выше.
  • 0
    Что вы делаете в таком сценарии? У меня есть эта проблема, даже если пользователь снова входит в систему, даже если я перезапускаю приложение после того, как он снова входит в систему
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню