2010-04-02 67 views
5

Rails的登錄具有其他autho插件,它爲集成的Twitter,Facebook,谷歌,雅虎等效果很好,但有一個解決方案...的OAuth在Rails的 - 谷歌,推特,臉譜,連像計算器登錄

似乎每個人都有自己的插件和要求,混合他們將是一個混亂。

這是爲了像使用Stackoverflow完成工作而不是使用API​​的強大功能一樣登錄用戶。

我想要做的是做什麼stackoverflow爲登錄,但在軌道。

回答

3

編寫自己的控制器代碼來連接到每個服務並重定向並不難。例如,要使用oauth對Twitter進行身份驗證,需要執行兩個操作和大約20行代碼。

將每個服務的代碼保存在自己的控制器中。

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

這是怎麼回事?謝謝。 – 2010-04-02 15:01:26

+0

爲twitter增加了示例代碼。這足以讓你開始,但你必須插入自己的用戶查找和創建。 – 2010-04-02 18:20:54

+0

感謝您的努力,會試試看 – s84 2010-04-03 02:53:56

1

我用authlogic做了一個實現,使用了與StackOverflow相同的JQuery OpenID Selector插件。適用於谷歌,雅虎,Facebook等。我已經使用了它3個月左右,效果很好。還有一些鍛鍊方面的問題,它也支持自動註冊。

我想將twitter添加到未來的版本,並希望其他人可以幫助添加一些功能/錯誤修復。 ;-) 一探究竟。

在行動:

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

代碼:

http://github.com/holden/authlogic_openid_selector_example