module Facy::GetToken

Public Instance Methods

browse(url) click to toggle source
# 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_token() click to toggle source
# 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_access() click to toggle source
# 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_file() click to toggle source
# 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_flow() click to toggle source
# File lib/facy/get_token.rb, line 85
def login_flow
  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_file() click to toggle source
# 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_file() click to toggle source
# 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_file() click to toggle source
# 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_id() click to toggle source
# 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_secret() click to toggle source
# 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_token() click to toggle source
# 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