ruby的omniauth gem包

写了几天第三方登录的程序,之前没用gem包,都是按照auth2的步骤来取登录信息(先取code再取token再根据token取用户信息),写了一堆的代码,看了各个第三方的api,花了很多很多时间。。。

今天发现这些都是做无用功,几乎所有常用的第三方平台都有相应的gem包


1.gemfile
gem 'omniauth'
gem 'omniauth_mm', path: 'omniauth_mm'  #自己写得,与app同级目录下
gem 'omniauth-facebook'
gem 'omniauth-twitter'
gem 'omniauth-googleplus'

gem 'omniauth-line'


2.config/initializers/omniauth.rb

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, Constants::CONFIG["facebook_clientid"], Constants::CONFIG["facebook_secret"]
  provider :twitter, Constants::CONFIG["twitter_key"], Constants::CONFIG["twitter_secret"]
  provider :googleplus, Constants::CONFIG["google_id"], Constants::CONFIG["google_secret"]
  provider :mm, Constants::CONFIG["mm_application_id"], Constants::CONFIG["mm_secret"]
end


3. config\routes.rb

#将omniauth的callback映射到自己的action

  get '/auth/facebook/callback', to: 'third_party#auth_facebook_ok'
  get '/auth/twitter/callback', to: 'third_party#auth_twitter_ok'
  get '/auth/googleplus/callback', to: 'third_party#auth_google_ok'
  get '/auth/line/callback', to: 'third_party#auth_line_ok'
  get '/auth/mm/callback', to: 'third_party#auth_mm_ok'


4.自己的action取授权成功后的信息

#twitter授权登录成功后
  def auth_twitter_ok
    userInfo = request.env['omniauth.auth']["info"]
    userName = userInfo["name"]
    userId = request.env['omniauth.auth']["uid"]
    picUrl = userInfo["image"]
    return redirect_to "/"
  end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值