简介

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

安装

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
    
  • 注意

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

API文档

腾讯微博API文档:http://open.t.qq.com/resource.php?i=1,1
新浪微博API文档:http://open.t.sina.com.cn/wiki/index.php/API%E6%96%87%E6%A1%A3
豆瓣微博API文档:http://www.douban.com/service/apidoc/reference/