This is the OmniAuth strategy for authenticating to Douban. To use it, you'll need to sign up for an OAuth2 Application Key and Secret on the Open Platform
gem install omniauth-douban-oauth2
use OmniAuth::Builder do
provider :douban, ENV['DOUBAN_KEY'], ENV['DOUBAN_SECRET']
end
Rails + Devise + Omniauth-douban-oauth2
require 'sinatra'
require 'omniauth-douban-oauth2'
KEY = 'your api key'
SECRET = 'your api secret'
use Rack::Session::Cookie
use OmniAuth::Builder do
provider :douban, KEY, SECRET
end
get '/' do
'<a href="/auth/douban">Douban</a>'
end
get '/auth/douban/callback' do
auth = env['omniauth.auth']
auth.to_hash.to_s
end
get '/auth/failure' do
'auth failure'
end
Here's an example Auth Hash available in request.env['omniauth.auth']
:
{
"provider" => "douban",
"uid" => "2217855",
"info" => {
"name" => "小松其实还没有",
"nickname" => "xiaosong",
"location" => "陕西西安",
"image" => "http://img3.douban.com/icon/u2217855-34.jpg",
"urls" => { :alt => "http://www.douban.com/people/xiaosong/" },
"description" => "你确实知道就必须证明",
},
"credentials" => {
"token" => "6516f0d........", # OAuth 2.0 access_token
"refresh_token" => "30c8c560..........", # OAuth 2.0 refresh_token
"expires_at" => 1357053699, # when the access token expires (it always will)
"expires" => true # this will always be true
},
"extra" => {
"raw_info" => {
"loc_id" => "118371",
"name" => "小松其实还没有",
"created" => "2008-02-05 15:26:44",
"loc_name" => "陕西西安",
"avatar" => "http://img3.douban.com/icon/u2217855-34.jpg",
"signature" => "啊我要增肥...",
"uid" => "xiaosong",
"alt" => "http://www.douban.com/people/xiaosong/",
"id" => "2217855",
"desc" => "你确实知道就必须证明"
}
}
}