Rails — Facebook с Omniauth и Koala: как обновить токен с истекшим сроком действия

У меня есть приложение, в котором пользователи могут связать свои учетные записи Facebook. Они могут войти в систему, используя свою электронную почту, но они могут связать свою учетную запись Facebook.

В просмотреть, где я показываю связанные социальные сети (Facebook и другие), у меня есть что-то вроде этого:

<%= image_tag @facebook.get_facebook_picture %>

Это вызовет метод экземпляра, подобный этому:

def get_facebook_picture
    unless self.token.nil?
      facebook_graph = Koala::Facebook::GraphAPI.new(self.token)
      fb_picture = facebook_graph.get_picture("me", { :type => "small" })
    end
end

Это будет хорошо работать, если только токен Facebook, который я сохранил в своей БД истек. Поэтому я добавил этот обработчик исключений в упомянутый контроллер:

def facebook_exception_handler exception
    if exception.fb_error_type.eql? 'OAuthException'
      # Let's get a new auth token... How?
    else
      logger.debug "Damn it. We don't know what error is coming from FB"
      raise exception
    end
end

Я правильно перехватываю исключение, но не вижу, как обновить токен доступа, который у меня есть в моей базе данных. Обратите внимание, что токен доступа, который я были вставлены с помощью OmniAuth.Итак, мой вопрос:

Учитывая, что у меня есть OAuthException, как я могу обновить токен доступа определенного пользователя (UID), используя Omniauth?

8
задан Nobita 17 April 2012 в 00:35
поделиться