主题:OAuth gem for rails,支持豆瓣,新浪微薄,腾讯微博,搜狐微博,网易微博
http://www.iteye.com/topic/975805
http://www.iteye.com/topic/866280
地址: https://github.com/hooopo/oauth_china
目前完成oauth认证和发微薄功能,欢迎测试或者fork。
简介
引用
OAuth gem for rails3,支持豆瓣,新浪微薄,腾讯微博,搜狐微博,网易微博。
安装
Ruby代码
gem install oauth_china使用
在Gemfile里添加:
Ruby代码
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"
演示
Ruby代码
#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注意
系统时间要正确设置。否则会出现timstamps refused错误
ps.抱怨一下,国内这些开放api接口新浪的是最方便的,无论文档还是认证流程。其他都是各种不按标准。。各种坑人啊。。尤其是搜狐网易。
查看更多关于主题:OAuth gem for rails,支持豆瓣,新浪微薄,腾讯微博,搜狐微博,网易微博的详细内容...