Tengo una aplicación donde los usuarios pueden vincular sus cuentas de Facebook. Pueden iniciar sesión usando su correo electrónico, pero pueden vincular su cuenta de Facebook.Rails - Facebook con Omniauth y Koala: Cómo renovar un token caducado
En la vista en donde muestro las redes sociales vinculadas (Facebook y otros), que tienen algo como esto:
<%= image_tag @facebook.get_facebook_picture %>
Para ello, será un método de instancia como esta:
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
Este funcionará bien a menos que el token de Facebook que he almacenado en mi base de datos haya caducado. Así que he añadido este gestor de excepciones en el controlador mencionado:
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
I detectar la excepción correctamente, pero no puedo ver cómo iba a renovar el token de acceso que tengo en mi base de datos. Tenga en cuenta que el token de acceso que tengo se ha insertado utilizando OmniAuth. Entonces mi pregunta es:
Dado que tengo un OAuthException
, ¿cómo puedo renovar el token de acceso de un usuario en particular (UID) usando Omniauth?
Dado que esto no es una respuesta a su pregunta, Voy a dejar un comentario ... pero usted debería ser capaz de agarrar el imágenes sin un token activo usando: 'profile_pic = Koala :: Facebook :: GraphAPI.new.get_picture (fb_uid, {: type =>" large "})', ¿no? – courtsimas
Si desea obtener el token extendido de 60 días, [esto puede ayudar] (http://stackoverflow.com/a/16721737/805003) – manafire