OAuth gem for rails,支持豆瓣,新浪微薄,腾讯微博,搜狐微博,网易微博

2011-03-26 11:13

OAuth gem for rails,支持豆瓣,新浪微薄,腾讯微博,搜狐微博,网易微博

by

at 2011-03-26 03:13:17

original http://www.javaeye.com/topic/975805

地址:https://github.com/hooopo/oauth_china
目前完成oauth认证和发微薄功能,欢迎测试或者fork。

简介

引用
OAuth gem for rails3,支持豆瓣,新浪微薄,腾讯微博,搜狐微博,网易微博。

安装
gem install oauth_china

使用
在Gemfile里添加:

gem 'oauth'
gem 'oauth_china'


添加配置文件

配置文件路径:
引用
config/oauth/douban.yml
config/oauth/sina.yml
config/oauth/qq.yml
config/oauth/sohu.yml
config/oauth/netease.yml


配置文件格式:
引用
development:
   key:    "you api key"
   secret: "your secret"
   url:    "http://yoursite.com"
   callback: "http://localhost:3000/your_callback_url"
production:
   key:    "you api key"
   secret: "your secret"
   url:    "http://yoursite.com"
   callback: "http://localhost:3000/your_callback_url"

演示

 
   #config/oauth/sina.yml
     development:
           key:    "you api key"
           secret: "your secret"
           url:    "http://yoursite.com"
           callback: "http://localhost:3000/syncs/sina/callback"
         production:
           key:    "you api key"
           secret: "your secret"
           url:    "http://yoursite.com"
           callback: "http://localhost:3000/syncs/sina/callback"

 #config/routes.rb
 match "syncs/:type/new" => "syncs#new", :as => :sync_new
 match "syncs/:type/callback" => "syncs#callback", :as => :sync_callback

 #app/controllers/syncs_controller.rb
 # encoding: UTF-8
 class SyncsController < ApplicationController

   before_filter :login_required

   def new
     client = OauthChina::Sina.new
     authorize_url = client.authorize_url
     Rails.cache.write(build_oauth_token_key(client.name, client.oauth_token), client.dump)
     redirect_to authorize_url
   end

   def callback
     client = OauthChina::Sina.load(Rails.cache.read(build_oauth_token_key(params[:type], params[:oauth_token])))
     client.authorize(:oauth_verifier => params[:oauth_verifier])

     results = client.dump

     if results[:access_token] && results[:access_token_secret]
       #在这里把access token and access token secret存到db
       #下次使用的时候:
       #client = OauthChina::Sina.load(:access_token => "xx", :access_token_secret => "xxx")
       #client.add_status("同步到新浪微薄..")
       flash[:notice] = "授权成功!"
     else
       flash[:notice] = "授权失败!"
     end
     redirect_to account_syncs_path
   end

   private
   def build_oauth_token_key(name, oauth_token)
     [name, oauth_token].join("_")
   end

 end</pre>


注意
系统时间要正确设置。否则会出现timstamps refused错误

ps.抱怨一下,国内这些开放api接口新浪的是最方便的,无论文档还是认证流程。其他都是各种不按标准。。各种坑人啊。。尤其是搜狐网易。

      <br><br>
      作者: <a href="http://hooopo.javaeye.com">Hooopo</a> 
      <br>
      声明: 本文系JavaEye网站发布的原创文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
      <br><br>
      <span style="color:red">
        <a href="http://www.javaeye.com/topic/975805" style="color:red">已有 <strong>2</strong> 人发表回复,猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
      </span>
      <br><br><br>

JavaEye推荐