Как обрабатывать различные исключения FbGraph одновременно в ruby? - PullRequest
3 голосов
/ 15 сентября 2011

Я новичок в Ruby On Rails и занимаюсь разработкой веб-приложения с возможностью подключения к Facebook. Я использую omniauth & fb_graph gem для аутентификации пользователя и получения информации о пользователе.

При публикации сообщения пользователя на нашем сайте на его стене в Facebook я сталкиваюсь с проблемами в двух разных случаях использования:

  1. Если пользователь обновляет дублирующее сообщение о состоянии в моем приложении, я получаю следующее исключение

    FbGraph::Unauthorized (OAuthException :: (#506) Duplicate status message):
    
  2. Если предположить, что пользователь изменяет свой пароль на Facebook, то токен доступа пользователя, полученный от omniauth, становится недействительным, и я получаю следующее исключение

    FbGraph::Unauthorized (OAuthException :: Error validating access token: Session 
    does not match current stored session. 
    This may be because the user changed the password since the time the session 
    was created or Facebook has changed the session for security reasons.):
    

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

Во 2-м исключении следует запросить повторное подключение учетной записи facebook к моему приложению, чтобы я мог получить новый токен доступа.

Пожалуйста, помогите. Спасибо.

1 Ответ

3 голосов
/ 15 сентября 2011

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

begin
  # log in and post comment
rescue FbGraph::Unauthorized => e
  case e.message
  when /Duplicate status message/
    # handle dup code
  when /Error validating access token/
    # handle bad credentials
  else
    raise e
  end
 end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...