Module: Facy::GetToken

Included in:
Facy
Defined in:
lib/facy/get_token.rb

Instance Method Summary collapse

Instance Method Details

#browse(url) ⇒ Object



105
106
107
108
109
# File 'lib/facy/get_token.rb', line 105

def browse(url)
  Launchy.open(url)
rescue
  puts "warning: can't open url"
end

#exchange_long_term_tokenObject



51
52
53
54
55
56
57
58
59
60
61
# File 'lib/facy/get_token.rb', line 51

def exchange_long_term_token
  oauth = Koala::Facebook::OAuth.new(config[:app_id], config[:app_secret]) 
  new_token = oauth.exchange_access_token_info(config[:access_token])
  if new_token["access_token"]
    config[:access_token] = new_token["access_token"]
    log(:info, "long term access token exchanged success")
  else
    log(:error, "long term access token exchanged failed")
    raise Exception.new("can not accquire new access token") unless new_token["access_token"]
  end
end

#grant_accessObject



63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/facy/get_token.rb', line 63

def grant_access
  app_id = config[:app_id]
  redirect_uri = config[:redirect_uri]
  permission = config[:permission]

  get_access_url  =
    "https://www.facebook.com/dialog/oauth?client_id=#{app_id}&scope=#{permission}&redirect_uri=#{redirect_uri}"
  puts "★ goto #{get_access_url} to grant access to our app"
  browse(get_access_url)
  puts "→ after access granted press enter"
  STDIN.gets
end

#load_session_fileObject



36
37
38
39
40
41
42
43
# File 'lib/facy/get_token.rb', line 36

def load_session_file
  session = YAML.load_file(session_file)
  config[:access_token] = session["access_token"]
  return (ret = config[:access_token].nil? ? false : true)
  log(:info, "session file load success #{config[:access_token]}")
rescue Errno::ENOENT #file not found
  return false
end

#login_flowObject



85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/facy/get_token.rb', line 85

def 
  unless config[:app_id]
    setup_app_id
  end
  unless config[:app_secret]
    setup_app_secret
  end
  unless config[:granted]
    grant_access
  end
  save_config_file

  unless load_session_file 
    setup_token
    exchange_long_term_token
    save_session_file
  end
  log(:info, "login flow success")
end

#save_config_fileObject



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/facy/get_token.rb', line 24

def save_config_file
  File.open(config_file, 'w') do |f|
    conf = {
      "app_id" => config[:app_id],
      "app_secret" => config[:app_secret],
      "permission" => config[:permission],
      "granted" => true
    }
    f.write conf.to_yaml 
  end
end

#save_session_fileObject



45
46
47
48
49
# File 'lib/facy/get_token.rb', line 45

def save_session_file
  hash = {"access_token" => config[:access_token]}
  File.open(session_file, "w") { |f| f.write hash.to_yaml } 
  log(:info, "session file save success at #{session_file}")
end

#session_fileObject



5
6
7
# File 'lib/facy/get_token.rb', line 5

def session_file
  File.expand_path(config[:session_file_name], config[:session_file_folder])
end

#setup_app_idObject



9
10
11
12
13
14
15
# File 'lib/facy/get_token.rb', line 9

def setup_app_id
  developer_page = "https://developers.facebook.com"      
  puts "★ go to #{developer_page} and enter our app_id: "
  browse(developer_page)
  config[:app_id] = STDIN.gets.chomp
  log(:info, "app_id setup success #{config[:app_id]}")
end

#setup_app_secretObject



17
18
19
20
21
22
# File 'lib/facy/get_token.rb', line 17

def setup_app_secret
  developer_page = "https://developers.facebook.com"      
  puts "★ go to #{developer_page} and enter our app_secret: "
  config[:app_secret] = STDIN.gets.chomp
  log(:info, "app_secret setup success #{config[:app_id]}")
end

#setup_tokenObject



76
77
78
79
80
81
82
83
# File 'lib/facy/get_token.rb', line 76

def setup_token 
  developer_page = "https://developers.facebook.com/tools/accesstoken/"
  puts "★  goto #{developer_page} and enter User access token: "
  browse(developer_page)
  token = STDIN.gets.chomp
  config[:access_token] = token
  log(:info, "setup access token success: #{token}")
end