在"Omniauth pure"的基础上,实现国产 OAuth 认证(weibo,tqq,douban,renren),除了对代码的调整,还有对 weibo,tqq,douban,renren 创建授权应用。各位,在 weibo 等 OAuth 认证时,会出现各种各样的授权问题,特头疼。还是慢慢解决吧。
"Omniauth pure" 的来源:https://github.com/markusproske/omniauth_pure
针对 weibo,tqq 认证,直接在 Gemfile 中 gem 就好,在 Omniauth 的 List-of-Strategies 中即可找到。(https://github.com/intridea/omniauth/wiki/List-of-Strategies)
https://github.com/liluo/omniauth-douban-oauth2/blob/master/lib/omniauth/strategies/douban.rb https://github.com/ballantyne/omniauth-renren/blob/master/lib/omniauth/strategies/renren.rb
注:KEY,SECRET 值,请用相应的授权应用的值。
并在该 controller 的 create 方法中,增加
增加上述信息,就可以实现相应的认证。
在 Omniauth 的 List-of-Strategies 没有支持 douban 的 gem,但是在 Github 目录下能搜索到两组:
使用时,总是提示:400 Bad Request (OAuth::Unauthorized) (很明显它是依赖的 omniauth-auth) Scott Ballantyne 提到:originally douban used oauth 1, but now it uses oauth2. maybe try https://github.com/liluo/omniauth-douban-oauth2 说实话,应该早点找 Scott Ballantyne(@shichuan),要不就不会一直看着 400 Bad Request (OAuth::Unauthorized),郁闷了很久。
gem 后,在 bundle install 时,会提示:omniauth-auth2 版本冲突问题。 所以,老大就建议直接引用 liluo/omniauth-douban-oauth2 / lib / omniauth / strategies / douban.rb,将该文件放在 Omniauth pure/ lib / omniauth / strategies 下,然后在 config/environments/development.rb 中 provider :douban, ENV['DOUBAN_KEY'], ENV['DOUBAN_SECRET'] 之前,先 require 'omniauth/strategies/douban.rb',其他并无任何改动,这样就可以实现 douban 认证
renren 认证时,同样采用 douban 认证的方式,但是觉得一切都 ok 时,可总是提示: error:invalid_request error_description:Invalid redirect_uri. 原因在于没有在授权 renren 应用时,没有填写对应用根地址,应用回调地址。
weibo,tqq,douban,renren 的认证总算搞定了,说实话,对 OAuth 认证,具体的信息还是不明确。明天,另一位同事来了,就可以进行下面的工作了。
上述,纯属记录。(有任何問題,再說)