¿Cómo puedo buscar el token de acceso de un usuario que utiliza la gema Twitter y la gema OmniAuth cuando los usuarios ya se registra en?
-
11-10-2019 - |
Pregunta
Actualmente me autenticar al usuario mediante OmniAuth. Esto se ve como esta en mi controlador de sesiones y funciona bien:
def create
auth = request.env['omniauth.auth']
unless @auth = Authentication.find_from_hash(auth)
# Create a new user or add an auth to existing user, depending on
# whether there is already a user signed in.
@auth = Authentication.create_from_hash(auth, current_user)
end
# Log the authorizing user in.
self.current_user = @auth.user
redirect_to authentications_url, :notice => "You've signed in!"
end
Después de esto, yo he guardado el fluido de twitter en mi mesa de autenticaciones (también uso linkedin, facebook) y pensar que las sesiones de Twitter ha sido cerrada.
¿Cómo ahora autentico para que pueda utilizar la gema Twitter? Creo que debería ser algo como esto si yo estaba llamando justo después de la devolución de llamada OmniAuth.
token = auth['credentials']['token'],
secret = auth['credentials']['secret']
Twitter.oauth_token = token
Twitter.oauth_token_secret = secret
Me claramente necesario reiniciar la sesión y poner el testigo y secreto en el lugar correcto. ¿Cómo puedo crear un método para hacer esto?
Solución
necesidad de almacenar tanto el token y el secreto proporcionado por Twitter en su tabla de autenticaciones (Authentication.create_from_hash
). Mientras usted está haciendo eso, esto debería funcionar:
twitter_credentials = current_user.authorizations.find_by_provider(:twitter)
Twitter.oauth_token = twitter_credentials.token
Twitter.oauth_token_secret = twitter_credentials.token_secret
Eso suponiendo que en la tabla de autenticaciones que almacenan el Twitter token y secreta como token
y token_secret
, así como el almacenamiento del proveedor como twitter