2010-04-02 5 views
5

Rails ha il plugin resto autho che funziona bene, ma c'è una soluzione per l'integrazione di Twitter, Facebook, Google, Yahoo, ecc ...OAuth in Rails - Google, Twitter, Facebook, collegati per l'accesso come StackOverflow login

Sembra che ognuno abbia il suo plugin e le sue esigenze e mescolarle sarà un disastro.

Questo è per gli utenti che accedono come StackOverflow ottiene le cose non per l'utilizzo delle funzionalità robuste delle API.

Quello che voglio fare è fare ciò che StackOverflow ha fatto per il login ma in binari.

risposta

3

Non è troppo difficile scrivere il proprio codice controller per connettersi a ciascuno di questi servizi e reindirizzare. Ad esempio, per autenticare su twitter utilizzando oauth sono necessarie due azioni e circa 20 righe di codice totale.

Tenere il codice per ogni servizio separato nel proprio controller.

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

Com'è un esempio? Grazie. –

+0

Aggiunto codice di esempio per Twitter. È sufficiente per iniziare, ma dovrai collegare la tua ricerca utente e creare. –

+0

Grazie per lo sforzo, ci proveremo – s84

1

Ho realizzato un'implementazione di questo utilizzando authlogic, utilizzando lo stesso plugin JQuery OpenID Selector che StackOverflow sta utilizzando. Funziona con Google, Yahoo, Facebook, ecc. Lo uso da circa 3 mesi e funziona abbastanza bene. Ancora alcuni nodi per l'allenamento, supporta anche la registrazione automatica.

Vorrei aggiungere twitter alle versioni future e spero che altri possano contribuire ad aggiungere alcune funzionalità/correzioni di errori. ;-) Controlla.

In azione:

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

Codice:

http://github.com/holden/authlogic_openid_selector_example

Problemi correlati