omniauth-xiaonei 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +29 -1
- data/example/client_side.rb +32 -0
- data/lib/omniauth-xiaonei.rb +2 -0
- data/lib/omniauth/strategies/{renren.rb → xiaonei.rb} +73 -73
- data/lib/omniauth/xiaonei.rb +2 -0
- data/lib/omniauth/xiaonei/version.rb +5 -0
- data/omniauth-renren.gemspec +5 -5
- metadata +10 -9
- data/lib/omniauth-renren.rb +0 -2
- data/lib/omniauth/renren.rb +0 -2
- data/lib/omniauth/renren/version.rb +0 -5
data/README.rdoc
CHANGED
@@ -1,9 +1,37 @@
|
|
1
|
-
= Omniauth-
|
1
|
+
= Omniauth-xiaonei
|
2
2
|
|
3
3
|
Omniauth strategy for renren[http://www.renren.com]
|
4
4
|
|
5
5
|
= Usage
|
6
6
|
|
7
|
+
gem install omniauth-xiaonei
|
8
|
+
|
9
|
+
具体用法请参照Omniauth和example文件夹下的client_side.rb:
|
10
|
+
|
11
|
+
gem install sinatra --no-rdoc --no-ri
|
12
|
+
ruby -rubygems client_side.rb
|
13
|
+
|
14
|
+
如果出现"forbidden"等问题,有可能是因为Omniauth-oauth2 1.1.0的bug,可以这样解决:
|
15
|
+
|
16
|
+
# 在Gemfile中加入这一行
|
17
|
+
gem "omniauth-oauth2", :git => "git://github.com/lastomato/omniauth-oauth2.git"
|
18
|
+
# 然后运行
|
19
|
+
bundle install
|
20
|
+
|
21
|
+
# 或者安装 1.0.2版本的Omniauth-oauth2
|
22
|
+
gem install --version "1.0.2" omniauth-oauth2
|
23
|
+
|
24
|
+
在config/initializers/omniauth.rb中,可以传入:fields参数,其值为字符串,作用是在认证结束阶段返回用户资料时指定返回的具体内容。
|
25
|
+
可以参见人人的文档:http://wiki.dev.renren.com/wiki/Users.getInfo
|
26
|
+
|
27
|
+
下面是可以选的值:
|
28
|
+
|
29
|
+
"uid,name,sex,star,zidou,vip,birthday,tinyurl,headurl,mainurl,hometown_location,work_history,university_history"
|
30
|
+
|
31
|
+
如果不填,那么默认的值为:"uid,name,tinyurl,headhurl,zidou,star"
|
32
|
+
|
33
|
+
参数的具体含义请参照人人的文档(如上所示)。
|
34
|
+
|
7
35
|
Please refer to Omniauth[https://github.com/intridea/omniauth/] for usage
|
8
36
|
|
9
37
|
= Thanks
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require "sinatra"
|
4
|
+
require "omniauth-xiaonei"
|
5
|
+
require "multi_json"
|
6
|
+
|
7
|
+
use Rack::Session::Cookie
|
8
|
+
|
9
|
+
# set your api_key and api_secret here
|
10
|
+
use OmniAuth::Builder do
|
11
|
+
provider :xiaonei, API_KEY, API_SECRET
|
12
|
+
end
|
13
|
+
|
14
|
+
# sending request
|
15
|
+
get "/" do
|
16
|
+
redirect "/auth/xiaonei"
|
17
|
+
end
|
18
|
+
|
19
|
+
# callback phase
|
20
|
+
get "/auth/:provider/callback" do
|
21
|
+
content_type "application/json"
|
22
|
+
begin
|
23
|
+
MultiJson.encode(request.env)
|
24
|
+
rescue Exception => e
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# in case of failure
|
29
|
+
get "/auth/failure" do
|
30
|
+
content_type "application/json"
|
31
|
+
MultiJson.encode(request.env)
|
32
|
+
end
|
@@ -1,74 +1,74 @@
|
|
1
|
-
require "faraday"
|
2
|
-
require "digest/md5"
|
3
|
-
require "omniauth/strategies/oauth2"
|
4
|
-
|
5
|
-
module OmniAuth
|
6
|
-
module Strategies
|
7
|
-
class
|
8
|
-
option :name, "
|
9
|
-
|
10
|
-
option :client_options, {
|
11
|
-
:site => "https://graph.renren.com"
|
12
|
-
}
|
13
|
-
|
14
|
-
option :token_params, {
|
15
|
-
:grant_type => "authorization_code"
|
16
|
-
}
|
17
|
-
|
18
|
-
#option :api_url, "http://api.renren.com/restserver.do"
|
19
|
-
|
20
|
-
def request_phase
|
21
|
-
redirect client.auth_code.authorize_url({:redirect_uri => callback_url}.merge(authorize_params))
|
22
|
-
end
|
23
|
-
|
24
|
-
def raw_info
|
25
|
-
opts = {
|
26
|
-
:method => "users.getInfo",
|
27
|
-
:v => "1.0",
|
28
|
-
:format => "JSON",
|
29
|
-
:access_token => access_token.token
|
30
|
-
}.merge!(fields)
|
31
|
-
conn = Faraday.new(:url => "http://api.renren.com") do |faraday|
|
32
|
-
faraday.request :url_encoded
|
33
|
-
faraday.response :logger
|
34
|
-
faraday.adapter Faraday.default_adapter
|
35
|
-
end
|
36
|
-
@raw_info ||= parse(conn.post("/restserver.do", append_sig(opts)).body).first || {}
|
37
|
-
end
|
38
|
-
|
39
|
-
uid {
|
40
|
-
raw_info[:uid.to_s]
|
41
|
-
}
|
42
|
-
|
43
|
-
info {
|
44
|
-
(options[:fields] || "name,email_hash,tinyurl,headurl,zidou,star").split(",").inject({}) { |t,v| t[v.to_sym] = raw_info[v];t }
|
45
|
-
}
|
46
|
-
|
47
|
-
extra {
|
48
|
-
hash = {}
|
49
|
-
hash["raw_info"] = raw_info unless skip_info?
|
50
|
-
prune! hash
|
51
|
-
}
|
52
|
-
|
53
|
-
private
|
54
|
-
def append_sig(opts = {})
|
55
|
-
opts.merge!({ :sig => Digest::MD5.hexdigest(opts.inject([]) { |t, v| t << v.join("=") }.sort.join + options.client_secret) })
|
56
|
-
end
|
57
|
-
|
58
|
-
def fields
|
59
|
-
options[:fields] ? { :fields => options[:fields] } : {}
|
60
|
-
end
|
61
|
-
|
62
|
-
def prune!(hash)
|
63
|
-
hash.delete_if do |_, value|
|
64
|
-
prune!(value) if value.is_a?(Hash)
|
65
|
-
value.nil? || (value.respond_to?(:empty?) && value.empty?)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
def parse(content)
|
70
|
-
lambda { |body| MultiJson.respond_to?(:adapter) ? MultiJson.load(body) : MultiJson.decode(body) rescue body }.call(content)
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
1
|
+
require "faraday"
|
2
|
+
require "digest/md5"
|
3
|
+
require "omniauth/strategies/oauth2"
|
4
|
+
|
5
|
+
module OmniAuth
|
6
|
+
module Strategies
|
7
|
+
class Xiaonei < OmniAuth::Strategies::OAuth2
|
8
|
+
option :name, "xiaonei"
|
9
|
+
|
10
|
+
option :client_options, {
|
11
|
+
:site => "https://graph.renren.com"
|
12
|
+
}
|
13
|
+
|
14
|
+
option :token_params, {
|
15
|
+
:grant_type => "authorization_code"
|
16
|
+
}
|
17
|
+
|
18
|
+
#option :api_url, "http://api.renren.com/restserver.do"
|
19
|
+
|
20
|
+
def request_phase
|
21
|
+
redirect client.auth_code.authorize_url({:redirect_uri => callback_url}.merge(authorize_params))
|
22
|
+
end
|
23
|
+
|
24
|
+
def raw_info
|
25
|
+
opts = {
|
26
|
+
:method => "users.getInfo",
|
27
|
+
:v => "1.0",
|
28
|
+
:format => "JSON",
|
29
|
+
:access_token => access_token.token
|
30
|
+
}.merge!(fields)
|
31
|
+
conn = Faraday.new(:url => "http://api.renren.com") do |faraday|
|
32
|
+
faraday.request :url_encoded
|
33
|
+
faraday.response :logger
|
34
|
+
faraday.adapter Faraday.default_adapter
|
35
|
+
end
|
36
|
+
@raw_info ||= parse(conn.post("/restserver.do", append_sig(opts)).body).first || {}
|
37
|
+
end
|
38
|
+
|
39
|
+
uid {
|
40
|
+
raw_info[:uid.to_s]
|
41
|
+
}
|
42
|
+
|
43
|
+
info {
|
44
|
+
(options[:fields] || "name,email_hash,tinyurl,headurl,zidou,star").split(",").inject({}) { |t,v| t[v.to_sym] = raw_info[v];t }
|
45
|
+
}
|
46
|
+
|
47
|
+
extra {
|
48
|
+
hash = {}
|
49
|
+
hash["raw_info"] = raw_info unless skip_info?
|
50
|
+
prune! hash
|
51
|
+
}
|
52
|
+
|
53
|
+
private
|
54
|
+
def append_sig(opts = {})
|
55
|
+
opts.merge!({ :sig => Digest::MD5.hexdigest(opts.inject([]) { |t, v| t << v.join("=") }.sort.join + options.client_secret) })
|
56
|
+
end
|
57
|
+
|
58
|
+
def fields
|
59
|
+
options[:fields] ? { :fields => options[:fields] } : {}
|
60
|
+
end
|
61
|
+
|
62
|
+
def prune!(hash)
|
63
|
+
hash.delete_if do |_, value|
|
64
|
+
prune!(value) if value.is_a?(Hash)
|
65
|
+
value.nil? || (value.respond_to?(:empty?) && value.empty?)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def parse(content)
|
70
|
+
lambda { |body| MultiJson.respond_to?(:adapter) ? MultiJson.load(body) : MultiJson.decode(body) rescue body }.call(content)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
74
|
end
|
data/omniauth-renren.gemspec
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
$:.push File.expand_path("../lib", __FILE__)
|
3
|
-
require "omniauth/
|
3
|
+
require "omniauth/xiaonei/version"
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "omniauth-xiaonei"
|
7
|
-
s.version = Omniauth::
|
7
|
+
s.version = Omniauth::Xiaonei::VERSION
|
8
8
|
s.authors = ["Jie Fan"]
|
9
9
|
s.email = ["ustc.flyingfox@gmail.com"]
|
10
10
|
s.homepage = "https://github.com/lastomato/omniauth-xiaonei"
|
11
|
-
s.summary = %q{Omniauth strategy for Renren}
|
12
|
-
s.description = %q{Omniauth strategy for Renren}
|
11
|
+
s.summary = %q{ Omniauth strategy for Renren (Previous Xiaonei) }
|
12
|
+
s.description = %q{ Omniauth strategy for Renren }
|
13
13
|
|
14
|
-
s.rubyforge_project = "omniauth-
|
14
|
+
s.rubyforge_project = "omniauth-xiaonei"
|
15
15
|
|
16
16
|
s.files = `git ls-files`.split("\n")
|
17
17
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-xiaonei
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-08-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: omniauth-oauth2
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
|
-
description: Omniauth strategy for Renren
|
46
|
+
description: ! ' Omniauth strategy for Renren '
|
47
47
|
email:
|
48
48
|
- ustc.flyingfox@gmail.com
|
49
49
|
executables: []
|
@@ -54,10 +54,11 @@ files:
|
|
54
54
|
- Gemfile
|
55
55
|
- README.rdoc
|
56
56
|
- Rakefile
|
57
|
-
-
|
58
|
-
- lib/omniauth
|
59
|
-
- lib/omniauth/
|
60
|
-
- lib/omniauth/
|
57
|
+
- example/client_side.rb
|
58
|
+
- lib/omniauth-xiaonei.rb
|
59
|
+
- lib/omniauth/strategies/xiaonei.rb
|
60
|
+
- lib/omniauth/xiaonei.rb
|
61
|
+
- lib/omniauth/xiaonei/version.rb
|
61
62
|
- omniauth-renren.gemspec
|
62
63
|
homepage: https://github.com/lastomato/omniauth-xiaonei
|
63
64
|
licenses: []
|
@@ -78,9 +79,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
78
79
|
- !ruby/object:Gem::Version
|
79
80
|
version: '0'
|
80
81
|
requirements: []
|
81
|
-
rubyforge_project: omniauth-
|
82
|
+
rubyforge_project: omniauth-xiaonei
|
82
83
|
rubygems_version: 1.8.24
|
83
84
|
signing_key:
|
84
85
|
specification_version: 3
|
85
|
-
summary: Omniauth strategy for Renren
|
86
|
+
summary: Omniauth strategy for Renren (Previous Xiaonei)
|
86
87
|
test_files: []
|
data/lib/omniauth-renren.rb
DELETED
data/lib/omniauth/renren.rb
DELETED