douban Ruby client
Pull request Compare This branch is even with lidaobing:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
lib
spec
.gitignore
.rspec
.travis.yml
Gemfile
Gemfile.lock
History.rdoc
Manifest.txt
README.rdoc
Rakefile
douban-ruby.gemspec

README.rdoc

Douban Ruby Client

github.com/lidaobing/douban-ruby

Description

douban ruby client. including OAuth support.

Installation

gem install douban-ruby

Usage

Basic Process

require 'douban'

douban = Douban::Authorize.new(apikey, secret)
puts "please open #{douban.get_authorize_url}"
puts "after login, press Enter to continue"

gets
puts douban.get_people

Async Process (or Server Process)

class DoubanController < ApplicationController
  DOUBAN_APIKEY = '0fb6d0a851af01a12f2471f8f50d04e3'
  DOUBAN_SECRET = 'c59e3be2ccdde999'

  def index
    unless params[:oauth_token]
      unless session[:access_token]
        # step 1, initial state, store request_token to session
        callback_url = url_for :action => :index
        redirect_url = douban.get_authorize_url(callback_url)
        session[:request_token] = douban.request_token :as_hash
        redirect_to redirect_url
      else
        # step 3, have access_token, now you can use douban API
        douban.access_token = session[:access_token]
        render :text => douban.get_people.inspect
      end
    else
      if session[:request_token]
        # step 2, return from douban, store access_token to session
        douban.request_token = session[:request_token]
        douban.auth
        reset_session
        session[:access_token] = douban.access_token :as_hash
        redirect_to :action => :index
      else
        # error branch, you return from douban, but no request_token in session
        logger.info "return from oauth but no request_token"
        redirect_to :action => :index
      end
    end
  end

  private
  def douban
    @douban ||= Douban::Authorize.new DOUBAN_APIKEY, DOUBAN_SECRET
  end
end

LICENSE:

licensed under Artistic License or GPL license.