首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

应用Google账户登录的实现代码

2012-11-07 
使用Google账户登录的实现代码Gemfile为:gem ruby-openidgem rack-openid?sessions_controller.rb的代

使用Google账户登录的实现代码

Gemfile为:

gem 'ruby-openid'gem 'rack-openid'

?sessions_controller.rb的代码:

class SessionsController < ApplicationController  def new    flash[:returnurl] = params[:returnurl] if params[:returnurl]    response.headers['WWW-Authenticate'] = Rack::OpenID.build_header( #build身份验证header,跳转到OpenID认证url        :identifier => "https://www.google.com/accounts/o8/id", #这里hard code了Google的OpenID url,测试后会加上别的如新浪围脖/豆瓣等        :required => ["http://axschema.org/contact/email"], #返回OpenID帐号的email        :return_to => sessions_url, #返回为post create action        :method => 'POST')    head 401 #状态码为401  end  def create    if openid = request.env[Rack::OpenID::RESPONSE]      case openid.status      when :success        ax = OpenID::AX::FetchResponse.from_success_response(openid)        identify_url = openid.display_identifier        email = ax.get_single('http://axschema.org/contact/email') # 得到OpenID帐号的email        user = User.where(:email => email).first || User.new        user.email = email        user.identify_url = identify_url        log_in(user)        redirect_to(flash[:returnurl] || root_path)      when :failure        render :action => 'problem'      end    else      redirect_to new_session_path    end  endend
?

热点排行