У меня есть приложение, в котором пользователи могут связать свои учетные записи 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?