Class: SocialAuth::FacebookService
- Inherits:
-
Service
show all
- Defined in:
- app/models/social_auth/facebook_service.rb
Constant Summary
Constants inherited
from Service
Service::ACCEPTED_METHODS, Service::REDIS_CACHE
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Service
#access_token, append_to_associated_services, #append_to_friends_list, #authenticated?, #connected?, create_with_request, #disconnect, disconnect_user, #redis_instance, #redis_key, #services
Class Method Details
.connect_with(user, auth_token = {}, method = "Connected") ⇒ Object
20
21
22
23
24
25
26
27
28
29
|
# File 'app/models/social_auth/facebook_service.rb', line 20
def self.connect_with(user, auth_token={}, method="Connected")
request = create_connection(auth_token)
return create_with_request(
request.id,
user,
method,
{access_token: request.access_token}
)
end
|
.create_connection(auth_token = {}) ⇒ Object
31
32
33
34
35
36
37
38
39
|
# File 'app/models/social_auth/facebook_service.rb', line 31
def self.create_connection(auth_token={})
fb_user = FbGraph2::User.me(auth_token[:access_token])
fb_user.fetch
rescue FbGraph2::Exception::InvalidToken => e
raise InvalidToken.new(e.message)
rescue FbGraph2::Exception::BadRequest => e
raise BadRequest.new(e.message)
end
|
.init_with(auth_token = {}) ⇒ Object
9
10
11
12
13
14
15
16
17
18
|
# File 'app/models/social_auth/facebook_service.rb', line 9
def self.init_with(auth_token={})
request = create_connection(auth_token)
return create_with_request(
request.id,
User.create_with_facebook_request(request),
"Authenticated",
{access_token: request.access_token}
)
end
|
Instance Method Details
#friend_ids ⇒ Object
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'app/models/social_auth/facebook_service.rb', line 41
def friend_ids
if redis_instance.exists(redis_key(:friends))
friend_ids = redis_instance.smembers(redis_key(:friends))
else
friend_ids = self.class.create_connection(access_token).friends.map(&:id)
unless friend_ids.empty?
redis_instance.del(redis_key(:friends))
redis_instance.sadd(redis_key(:friends), friend_ids)
redis_instance.expire(redis_key(:friends), REDIS_CACHE)
end
end
friend_ids
rescue InvalidToken => e
disconnect(e)
return []
end
|
#name ⇒ Object
5
6
7
|
# File 'app/models/social_auth/facebook_service.rb', line 5
def name
"Facebook"
end
|