2010-04-02 10 views
5

Carriles tiene el plugin resto Autho que funciona bien, pero es que hay una solución para la incorporación de twitter, facebook, google, yahoo, etc ...OAuth en carriles - Google, Twitter, Facebook, conectar para iniciar la sesión como stackoverflow entrada

Parece que cada uno tiene sus propios complementos y demandas y mezclarlos va a ser un desastre.

Esto es para iniciar sesión en usuarios como Stackoverflow hace las cosas no para usar las características robustas de las API.

Lo que quiero hacer es hacer lo que stackoverflow hizo para iniciar sesión pero en rieles.

Respuesta

3

No es demasiado difícil escribir su propio código de controlador para conectarse a cada uno de estos servicios y redirigir. Por ejemplo, para autenticarse en Twitter usando oauth toma dos acciones y cerca de 20 líneas de código total.

Mantenga el código para cada servicio por separado en su propio controlador.

def twitter_oauth 
    o = Twitter::OAuth.new(your_twitter_consumer_token, your_twitter_consumer_secret, :authorize_path => '/oauth/authenticate', :sign_in => true) 
    o.set_callback_url(twitter_cb_url) 
    session[:twitter_oauth_request_token] = o.request_token.token 
    session[:twitter_oauth_request_secret] = o.request_token.secret 
    redirect_to o.request_token.authorize_url 
end 

def twitter_oauth_cb 
    o = Twitter::OAuth.new(your_twitter_consumer_token, your_twitter_consumer_secret, :authorize_path => '/oauth/authenticate', :sign_in => true) 
    if params[:denied] 
    redirect_to root_url 
    elsif params[:oauth_verifier] 
    o.authorize_from_request(session[:twitter_oauth_request_token], 
          session[:twitter_oauth_request_secret], 
          params[:oauth_verifier]) 
    # look up this user in the db by o.access_token.token 
    # is the user not found? create them, save their token 
    # log them in - UserSession.create(user, true) 
    redirect_to root_url 
    end 
end 
+0

¿Qué tal un ejemplo? Gracias. –

+0

Código de ejemplo agregado para twitter. Es suficiente para comenzar, pero tendrá que conectar su propia búsqueda de usuario y crear. –

+0

Gracias por el esfuerzo, lo intentaré – s84

1

Hice una implementación de este usando authlogic, utilizando el mismo plugin de jQuery Selector de OpenID que Stackoverflow está utilizando. Funciona con Google, Yahoo, Facebook, etc. Lo he usado durante aproximadamente 3 meses y funciona bastante bien. Todavía algunos problemas para el entrenamiento, también es compatible con el registro automático.

Me gustaría agregar Twitter a versiones futuras y espero que otros ayuden a agregar algunas características/correcciones de errores. ;-) Echale un vistazo.

en acción:

http://big-glow-mama.heroku.com/

Código:

http://github.com/holden/authlogic_openid_selector_example

Cuestiones relacionadas