/
oauth_user.rb
43 lines (37 loc) · 1.38 KB
/
oauth_user.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
module TwitterAuth
module OauthUser
def self.included(base)
base.class_eval do
attr_protected :access_token, :access_secret
end
base.extend TwitterAuth::OauthUser::ClassMethods
base.extend TwitterAuth::Dispatcher::Shared
end
module ClassMethods
def identify_or_create_from_access_token(token, secret=nil)
raise ArgumentError, 'Must authenticate with an OAuth::AccessToken or the string access token and secret.' unless (token && secret) || token.is_a?(OAuth::AccessToken)
response = token.get(TwitterAuth.path_prefix + '/account/verify_credentials.json')
user_info = handle_response(response)
if user = User.find_by_login(user_info['screen_name'])
user.assign_twitter_attributes(user_info)
user.access_token = token.token
user.access_secret = token.secret
user.save
user
else
User.create_from_twitter_hash_and_token(user_info, token)
end
end
def create_from_twitter_hash_and_token(user_info, access_token)
user = User.new_from_twitter_hash(user_info)
user.access_token = access_token.token
user.access_secret = access_token.secret
user.save
user
end
end
def token
OAuth::AccessToken.new(TwitterAuth.consumer, access_token, access_secret)
end
end
end