簡體   English   中英

Rails中的OAuth - 谷歌,推特,臉書,連接登錄,如stackoverflow登錄

[英]OAuth in Rails - google, twitter, facebook, connect for login like stackoverflow login

Rails有其余的autho插件,運行良好,但有一個解決方案,結合Twitter,Facebook,谷歌,雅虎等...

似乎每個都有自己的插件和要求,混合它們將是一個爛攤子。

這適用於登錄用戶,例如Stackoverflow如何完成工作而不是使用API​​的強大功能。

我想做的是做stackoverflow為登錄做的事情,但是在rails中。

編寫自己的控制器代碼以連接到每個服務並重定向並不是很困難。 例如,使用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

我使用authlogic實現了這個,使用了StackOverflow使用的相同JQuery OpenID Selector插件。 與谷歌,雅虎,Facebook等合作。我已經使用它約3個月,它運作良好。 還有一些問題,它還支持自動注冊。

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

在行動:

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

碼:

http://github.com/holden/authlogic_openid_selector_example

如果你想有一個功能更完整的解決方案,並希望實現傳統方法的注冊,以及,那么你可以使用設計 ,其已經具備了omn​​iauth支持寶石。

您可以在railscast上關注以下教程

http://railscasts.com/episodes/235-devise-and-omniauth-revised

我希望它能幫助別人!

如果您有預算,可以查看RPX: https//rpxnow.com/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM