authlogic-connect 0.0.3.6 → 0.0.3.8
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +19 -4
- data/Rakefile +1 -1
- data/lib/authlogic_connect/oauth/tokens/linked_in_token.rb +10 -1
- data/lib/authlogic_connect/oauth/tokens/myspace_token.rb +16 -1
- data/lib/authlogic_connect/oauth/tokens/oauth_token.rb +9 -2
- data/lib/authlogic_connect/oauth/tokens/vimeo_token.rb +11 -1
- data/lib/authlogic_connect/oauth/tokens/yahoo_token.rb +9 -2
- data/lib/authlogic_connect/token.rb +1 -0
- metadata +3 -3
data/README.markdown
CHANGED
@@ -37,7 +37,7 @@ Rails 3: `Gemfile`
|
|
37
37
|
|
38
38
|
### 2b. Add the `OpenIdAuthentication.store`
|
39
39
|
|
40
|
-
Do to
|
40
|
+
Do to [some strange problem](http://github.com/openid/ruby-openid/issues#issue/1) I have yet to really understand, Rails 2.3.5 doesn't like when `OpenIdAuthentication.store` is null, which means it uses the "in memory" store and for some reason fails.
|
41
41
|
|
42
42
|
So as a fix, add these at the end of your `config/environment.rb` files:
|
43
43
|
|
@@ -142,26 +142,37 @@ These are examples of what you can get from a User. Code is placed in controlle
|
|
142
142
|
|
143
143
|
User model has the following public accessors and methods. This example assumes:
|
144
144
|
|
145
|
-
|
146
|
-
|
145
|
+
- You've associated your Google, OpenID, and Twitter accounts with this app.
|
146
|
+
- You're currently logged in via Google.
|
147
|
+
|
148
|
+
Inside the `show` method in a controller...
|
147
149
|
|
148
150
|
def show
|
149
151
|
@user = @current_user
|
152
|
+
|
150
153
|
puts @user.tokens #=> [
|
151
154
|
#<OpenidToken id: 12, user_id: 9, type: "OpenidToken", key: "http://my-openid-login.myopenid.com/", token: nil, secret: nil, active: nil, created_at: "2010-05-24 14:52:19", updated_at: "2010-05-24 14:52:19">,
|
152
155
|
#<TwitterToken id: 13, user_id: 9, type: "TwitterToken", key: "my-twitter-id-123", token: "twitter-token", secret: "twitter-secret", active: nil, created_at: "2010-05-24 15:03:05", updated_at: "2010-05-24 15:03:05">,
|
153
156
|
#<GoogleToken id: 14, user_id: 9, type: "GoogleToken", key: "my-email@gmail.com", token: "google-token", secret: "google-secret", active: nil, created_at: "2010-05-24 15:09:04", updated_at: "2010-05-24 15:09:04">]
|
157
|
+
|
154
158
|
puts @user.tokens.length #=> 3
|
159
|
+
|
155
160
|
# currently logged in with...
|
156
161
|
puts @user.active_token #=> #<GoogleToken id: 14, user_id: 9, type: "GoogleToken", key: "my-email@gmail.com", token: "google-token", secret: "google-secret", active: nil, created_at: "2010-05-24 15:09:04", updated_at: "2010-05-24 15:09:04">
|
162
|
+
|
157
163
|
puts @user.authenticated_with #=> ["twitter", "openid", "google"]
|
158
164
|
puts @user.authenticated_with?(:twitter) #=> true
|
159
165
|
puts @user.authenticated_with?(:facebook) #=> false
|
166
|
+
|
160
167
|
puts @user.has_token?(:google) #=> true
|
168
|
+
|
161
169
|
puts @user.get_token(:google) #=> #<GoogleToken id: 14, user_id: 9, type: "GoogleToken", key: "my-email@gmail.com", token: "google-token", secret: "google-secret", active: nil, created_at: "2010-05-24 15:09:04", updated_at: "2010-05-24 15:09:04">
|
170
|
+
|
162
171
|
# change active_token
|
163
172
|
@user.active_token = @user.get_token(:twitter)
|
164
173
|
puts @user.active_token #=> #<TwitterToken id: 13, user_id: 9, type: "TwitterToken", key: "my-twitter-id-123", token: "twitter-token", secret: "twitter-secret", active: nil, created_at: "2010-05-24 15:03:05", updated_at: "2010-05-24 15:03:05">
|
174
|
+
|
175
|
+
# access oauth api
|
165
176
|
@twitter = @user.active_token
|
166
177
|
@twitter_profile = JSON.parse(@twitter.get("/account/verify_credentials.json").body) #=> twitter api stuff
|
167
178
|
# ...
|
@@ -173,7 +184,7 @@ If they've associated their Facebook account with your site, you can access Face
|
|
173
184
|
|
174
185
|
def show
|
175
186
|
@user = @current_user
|
176
|
-
token = @user.active_token
|
187
|
+
token = @user.active_token # assuming this is FacebookToken
|
177
188
|
facebook = JSON.parse(token.get("/me"))
|
178
189
|
@profile = {
|
179
190
|
:id => facebook["id"],
|
@@ -192,6 +203,10 @@ If they've associated their Facebook account with your site, you can access Face
|
|
192
203
|
- Twitter
|
193
204
|
- Facebook
|
194
205
|
- Google
|
206
|
+
- LinkedIn
|
207
|
+
- MySpace
|
208
|
+
- Vimeo
|
209
|
+
- Yahoo
|
195
210
|
|
196
211
|
### OpenID
|
197
212
|
|
data/Rakefile
CHANGED
@@ -6,7 +6,7 @@ require 'rake/gempackagetask'
|
|
6
6
|
spec = Gem::Specification.new do |s|
|
7
7
|
s.name = "authlogic-connect"
|
8
8
|
s.author = "Lance Pollard"
|
9
|
-
s.version = "0.0.3.
|
9
|
+
s.version = "0.0.3.8"
|
10
10
|
s.summary = "Authlogic Connect: Let your app use all of Oauth and OpenID"
|
11
11
|
s.homepage = "http://github.com/viatropos/authlogic-connect"
|
12
12
|
s.email = "lancejpollard@gmail.com"
|
@@ -1,10 +1,19 @@
|
|
1
1
|
# http://developer.linkedin.com/docs/DOC-1008
|
2
|
+
# https://www.linkedin.com/secure/developer
|
2
3
|
# http://github.com/pengwynn/linkedin/tree/master/lib/linked_in/
|
3
4
|
class LinkedInToken < OauthToken
|
4
5
|
|
6
|
+
key do |access_token|
|
7
|
+
body = access_token.get("https://api.linkedin.com/v1/people/~:(id)").body
|
8
|
+
id = body.gsub("<id>([^><]+)</id>", "\\1") # so we don't need to also import nokogiri
|
9
|
+
id
|
10
|
+
end
|
11
|
+
|
5
12
|
settings "https://api.linkedin.com",
|
6
13
|
:request_token_path => "/uas/oauth/requestToken",
|
7
14
|
:access_token_path => "/uas/oauth/accessToken",
|
8
|
-
:authorize_path => "/uas/oauth/authorize"
|
15
|
+
:authorize_path => "/uas/oauth/authorize",
|
16
|
+
:http_method => "get",
|
17
|
+
:scheme => :query_string
|
9
18
|
|
10
19
|
end
|
@@ -1,11 +1,26 @@
|
|
1
1
|
# http://wiki.developer.myspace.com/index.php?title=Category:MySpaceID
|
2
2
|
# http://developerwiki.myspace.com/index.php?title=OAuth_REST_API_Usage_-_Authentication_Process
|
3
3
|
# http://developerwiki.myspace.com/index.php?title=How_to_Set_Up_a_New_Application_for_OpenID
|
4
|
+
# http://developer.myspace.com/Modules/Apps/Pages/ApplyDevSandbox.aspx
|
5
|
+
# after you've signed up:
|
6
|
+
# http://developer.myspace.com/modules/apps/pages/createappaccount.aspx
|
7
|
+
# "Create a MySpaceID App"
|
8
|
+
# http://developer.myspace.com/modules/apps/pages/editapp.aspx?appid=188312&mode=create
|
9
|
+
# http://developer.myspace.com/Modules/APIs/Pages/OAuthTool.aspx
|
10
|
+
# http://developer.myspace.com/Community/forums/p/3626/15947.aspx
|
4
11
|
class MyspaceToken < OauthToken
|
5
12
|
|
13
|
+
# http://wiki.developer.myspace.com/index.php?title=Portable_Contacts_REST_Resources
|
14
|
+
key do |access_token|
|
15
|
+
body = JSON.parse(access_token.get("/v2/people/@me/@self?format=json").body)
|
16
|
+
id = body["entry"]["id"]
|
17
|
+
end
|
18
|
+
|
6
19
|
settings "http://api.myspace.com",
|
7
20
|
:request_token_path => "/request_token",
|
8
21
|
:authorize_path => "/authorize",
|
9
|
-
:access_token_path => "/access_token"
|
22
|
+
:access_token_path => "/access_token",
|
23
|
+
:http_method => "get",
|
24
|
+
:scheme => :query_string
|
10
25
|
|
11
26
|
end
|
@@ -87,6 +87,9 @@ class OauthToken < Token
|
|
87
87
|
else
|
88
88
|
result[:key] = access.params[self.oauth_key] || access.params[self.oauth_key.to_s] # try both
|
89
89
|
end
|
90
|
+
else
|
91
|
+
puts "Access Token: #{access.inspect}"
|
92
|
+
raise "please set an oauth key for #{service_name.to_s}"
|
90
93
|
end
|
91
94
|
else
|
92
95
|
access = consumer.web_server.get_access_token(secret, :redirect_uri => redirect_uri)
|
@@ -103,7 +106,9 @@ class OauthToken < Token
|
|
103
106
|
yield request if block_given?
|
104
107
|
return request.authorize_url
|
105
108
|
else
|
106
|
-
|
109
|
+
options = {:redirect_uri => callback_url}
|
110
|
+
options[:scope] = self.config[:scope] unless self.config[:scope].blank?
|
111
|
+
return consumer.web_server.authorize_url(options)
|
107
112
|
end
|
108
113
|
end
|
109
114
|
|
@@ -111,8 +116,10 @@ class OauthToken < Token
|
|
111
116
|
OAuth::RequestToken.new(consumer, token, secret)
|
112
117
|
end
|
113
118
|
|
119
|
+
# if you pass a hash as the second parameter to consumer.get_request_token,
|
120
|
+
# ruby oauth will think this is a form and all sorts of bad things happen
|
114
121
|
def get_request_token(callback_url)
|
115
|
-
consumer.get_request_token(
|
122
|
+
consumer.get_request_token(:oauth_callback => callback_url)
|
116
123
|
end
|
117
124
|
|
118
125
|
def get_access_token(oauth_verifier)
|
@@ -1,8 +1,18 @@
|
|
1
1
|
# http://www.vimeo.com/api/docs/oauth
|
2
2
|
# http://www.vimeo.com/api/applications/new
|
3
|
+
# http://vimeo.com/api/applications
|
3
4
|
class VimeoToken < OauthToken
|
4
5
|
|
6
|
+
key do |access_token|
|
7
|
+
body = JSON.parse(access_token.get("http://vimeo.com/api/v2/#{access_token.token}/info.json"))
|
8
|
+
user_id = body.first["id"]
|
9
|
+
end
|
10
|
+
|
5
11
|
settings "http://vimeo.com",
|
6
|
-
:
|
12
|
+
:request_token_path => "/oauth/request_token",
|
13
|
+
:authorize_path => "/oauth/authorize",
|
14
|
+
:access_token_path => "/oauth/access_token",
|
15
|
+
:http_method => "get",
|
16
|
+
:scheme => :query_string
|
7
17
|
|
8
18
|
end
|
@@ -1,12 +1,19 @@
|
|
1
1
|
# https://developer.apps.yahoo.com/dashboard/createKey.html
|
2
|
+
# https://developer.apps.yahoo.com/projects
|
2
3
|
# http://developer.yahoo.com/oauth/guide/oauth-accesstoken.html
|
4
|
+
# http://developer.yahoo.com/oauth/guide/oauth-auth-flow.html
|
5
|
+
# http://code.google.com/apis/gadgets/docs/oauth.html
|
6
|
+
# http://developer.yahoo.com/social/rest_api_guide/web-services-guids.html
|
7
|
+
# A GUID identifies a person
|
8
|
+
# http://social.yahooapis.com/v1/me/guid
|
3
9
|
class YahooToken < OauthToken
|
4
10
|
|
5
|
-
|
11
|
+
# http://social.yahooapis.com/v1/me/guid
|
12
|
+
key :xoauth_yahoo_guid
|
6
13
|
|
7
14
|
settings "https://api.login.yahoo.com",
|
8
15
|
:request_token_path => '/oauth/v2/get_request_token',
|
9
16
|
:access_token_path => '/oauth/v2/get_token',
|
10
17
|
:authorize_path => '/oauth/v2/request_auth'
|
11
18
|
|
12
|
-
end
|
19
|
+
end
|
metadata
CHANGED
@@ -6,8 +6,8 @@ version: !ruby/object:Gem::Version
|
|
6
6
|
- 0
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.0.3.
|
9
|
+
- 8
|
10
|
+
version: 0.0.3.8
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Lance Pollard
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-05-
|
18
|
+
date: 2010-05-27 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|