Rails中的OAuth – 谷歌,推特,脸书,连接登录,如stackoverflow登录
Rails有其余的autho插件,效果很好,但有一个解决方案,结合Twitter,Facebook,谷歌,雅虎等…
似乎每个都有自己的插件和要求,混合它们将是一个烂摊子。
这适用于登录用户,例如Stackoverflow如何完成工作而不是使用API的强大function。
我想做的是做stackoverflow为登录做的事情,但是在rails中。
编写自己的控制器代码以连接到每个服务并重定向并不是很困难。 例如,使用oauth对twitter进行身份validation需要两个操作,总共约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
我肯定会投票支持OmniAuth:
https://github.com/intridea/omniauth
以下是一些可以帮助您入门的资源:
http://blog.railsrumble.com/blog/2010/10/08/intridea-omniauth
我使用authlogic实现了这个,使用了StackOverflow使用的相同JQuery OpenID Selector插件。 与谷歌,雅虎,Facebook等合作我已经使用它约3个月,它运作良好。 还有一些问题,它还支持自动注册。
我想将twitter添加到未来版本中,并希望其他人可以帮助添加一些function/错误修复。 ;-) 看看这个。
在行动:
http://big-glow-mama.heroku.com/
码:
如果您有预算,可以查看RPX: https : //rpxnow.com/ 。
如果你想要一个function更完整的解决方案,并希望实现传统的注册方法,那么你可以使用已经支持omniauth的devise gem 。
您可以在railscast上关注以下教程
http://railscasts.com/episodes/235-devise-and-omniauth-revised
我希望它能帮助别人!