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 

我使用authlogic实现了这个,使用了StackOverflow使用的相同JQuery OpenID Selector插件。 与谷歌,雅虎,Facebook等合作我已经使用它约3个月,它运作良好。 还有一些问题,它还支持自动注册。

我想将twitter添加到未来版本中,并希望其他人可以帮助添加一些function/错误修复。 ;-) 看看这个。

在行动:

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

码:

http://github.com/holden/authlogic_openid_selector_example

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

如果你想要一个function更完整的解决方案,并希望实现传统的注册方法,那么你可以使用已经支持omn​​iauth的devise gem

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

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

我希望它能帮助别人!