• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

QQ账号登陆的Ruby实现

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

腾讯公司最近开放了QQ登陆,这对广大站长是个好消息,从此实现QQ账号登陆您的网站不再是梦想。但是遍寻腾讯的SDK文档,并不见Ruby的实现,这对Ruby爱好者可不是个好消息。经过好几天的摸索,我终于成功实现了QQ登陆了。下面把代码贴出来。

首先要安装oauth

gem install oauth

写上配置信息

CONSUMER_OPTIONS = {

        :site => "http://openapi.qzone.qq.com",

        :request_token_path => "/oauth/qzoneoauth_request_token",

        :access_token_path => "/oauth/qzoneoauth_access_token",

        :authorize_path => "/oauth/qzoneoauth_authorize",

        :http_method => :get,

        :scheme => :query_string,        

        :nonce => Base64.encode64(OpenSSL::Random.random_bytes(32)).gsub(/\W/, \'\')[0, 32] }

 

  QQ_KEY = ×××

  QQ_SECRET = \'×××××××××××××××××××××××××××××\'

 

其中,QQ_KEY和QQ_SECRET换上你们自己的。

#第一个方法

def login_from_qq

    consumer = OAuth::Consumer.new(QQ_KEY, QQ_SECRET, CONSUMER_OPTIONS)

    request_token = consumer.get_request_token()

    session[:qqtoken] = request_token.token

    session[:qqsecret] = request_token.secret淘宝网女装夏装新款

 

 

    redirect_to request_token.authorize_url + "&oauth_consumer_key=205799&oauth_callback=http%3A%2F%2Flocalhost:3000%2Faccount%2Flogin_from_qq_callback"

  end

 

#用户点击授权后,调用回调方法

def login_from_qq_callback

  consumer = OAuth::Consumer.new(QQ_KEY, QQ_SECRET, CONSUMER_OPTIONS)

    request_token = ::OAuth::RequestToken.new(consumer, session[:qqtoken], session[:qqsecret])

    access_token = request_token.get_access_token(:oauth_vericode => params[:oauth_vericode])

 

   response = access_token.get("/user/get_user_info?openid=#{params[:openid]}")

     return_hash = ActiveSupport::JSON.decode(response.body)

     nickname        = User.find_by_name(return_hash["nickname"])

....

end

腾讯的接口有一个参数名字比较怪异,别人都叫做:oauth_verifier,他偏要叫做:oauth_vericode,这 要进行一个oauth gem库的crack,进入ruby的gem路径,打开/oauth-0.4.4/lib/oauth/client/helper.rb文件,在 oauth_parameters方法下加上一行代码,例如:

wander和imagin有什么区别

\'oauth_verifier\'         => options[:oauth_verifier],

        \'oauth_vericode\'         => options[:oauth_vericode],

然后重启ROR服务,后端代码就算写好了。前端网页加上一个qq登陆的图片,链接到login_from_qq。这样,QQ登陆就算是做好了。
另外,QQ登陆虽然是不需要审核的,但是如果需要把网站信息同步到用户的qzone中去,需要更多接口权限,这需要经过腾讯审核。

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Ruby中调用带有ProcessSubstitution语法的Shell命令发布时间:2022-07-14
下一篇:
ruby--调用方法发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap