· 9 years ago · Sep 20, 2016, 08:24 AM
1def twitter_async_connect cookie, current_user=nil, country_code = nil
2 oauth_token, outh_token_secret = SocialProvider::Manager.oauth_tokens_from_access_token(cookie[:twitter_oauth_token])
3 twitter_user = Twitter::REST::Client.new do |config|
4 config.consumer_key = ENV['TWITTER_KEY']
5 config.consumer_secret = ENV['TWITTER_SECRET']
6 config.access_token = oauth_token
7 config.access_token_secret = outh_token_secret
8 end
9 user = twitter_user.user
10 omiauth = User.oauth_object({
11 provider: "twitter",
12 id: user.id,
13 first_name: user.name.split(" ").first,
14 last_name: user.name.split(" ")[1..5].join(" "),
15 token: oauth_token,
16 nickname: user.screen_name,
17 secret: outh_token_secret
18 })
19 user = User.find_for_oauth(omiauth, current_user, cookie, country_code)
20end
21
22def facebook_async_connect(cookie, current_user=nil, country_code = nil)
23 oauth_token = exchange_facebook_token(cookie[:facebook_oauth_token]).access_token
24 user = FbGraph2::User.me(oauth_token).fetch
25 omiauth = User.oauth_object({
26 provider: "facebook",
27 id: user.identifier,
28 email: user.email,
29 first_name: user.first_name,
30 last_name: user.last_name,
31 token: oauth_token
32 })
33 user = User.find_for_oauth(omiauth, current_user, cookie, country_code)
34end
35
36def oauth_object(options={})
37 {
38 "provider"=>options[:provider],
39 "uid"=>options[:id],
40 "info"=>
41 {
42 "email"=>options[:email],
43 "nickname"=>options[:nickname],
44 "first_name"=>options[:first_name],
45 "last_name"=>options[:last_name]
46 },
47 "credentials"=>{
48 "token"=>options[:token],
49 "secret"=>options[:secret]
50 }
51 }
52end
53
54def exchange_facebook_token(token)
55 auth = FbGraph2::Auth.new(ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'])
56 auth.fb_exchange_token = token
57 auth.access_token!
58end
59
60def facebook_token_valid?(token)
61 FbGraph2::Auth.new(ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET']).debug_token!(token).is_valid
62end