Mam aplikację, w której użytkownicy mogą łączyć swoje konta na Facebooku. Mogą logować się za pomocą poczty e-mail, ale mogą połączyć swoje konto na Facebooku.Szyny - Facebook z Omniauth i Koala: Jak odnowić wygasły token
W widoku gdzie mogę pokazać połączonych sieci społecznościowych (Facebook i inne), mam coś takiego:
<%= image_tag @facebook.get_facebook_picture %>
To będzie wywołać metodę instancji tak:
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
ten będzie działać dobrze, chyba że znacznik Facebooka, który zapisałem w mojej bazie danych, wygasł. Więc dodałem ten obsługi wyjątku we wspomnianym kontrolerze:
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
złapię wyjątek poprawnie, ale nie widzę w jaki sposób odnowić token dostępu, który mam w bazie danych. Zauważ, że token dostępu, który mam, został wstawiony za pomocą OmniAuth. Więc moje pytanie brzmi:
Biorąc pod uwagę, że mam OAuthException
, w jaki sposób mogę odnowić token dostępu określonego użytkownika (UID) przy użyciu Omniauth?
Ponieważ to nie jest odpowiedź na pytanie, po prostu komentarza ... ale powinieneś być w stanie chwycić zdjęcia bez aktywnego tokena za pomocą: 'profile_pic = Koala :: Facebook :: GraphAPI.new.get_picture (fb_uid, {: type =>" large "})', prawda? – courtsimas
Jeśli chcesz uzyskać przedłużony 60-dniowy żeton, [to może pomóc] (http://stackoverflow.com/a/16721737/805003) – manafire