def request_token fb = FreshbooksOauth.new(current_user.fb_url) @request_token = fb.get_request_token(fb_callback_url) session[:fb_request_token] = @request_token.token session[:fb_request_token_secret] = @request_token.secret redirect_to @request_token.authorize_url end def callback fb = FreshbooksOauth.new(current_user.fb_url) @access_token = fb.exchange_request_for_access_token( session[:fb_request_token], session[:fb_request_token_secret], params[:oauth_verifier]) current_user.update_attributes(:fb_token=>@access_token.token.to_s, :fb_secret=>@access_token.secret.to_s) redirect_to fb_show_path end def show if((current_user.fb_token.blank? || current_user.fb_secret.blank?) && session[:fb_error].blank?) session[:fb_error] = true redirect_to fb_request_token_path return end client = FreshBooks::Client.new(current_user.fb_url+'.freshbooks.com', 'YOUR FRESHBOOKS SUBDOMAIN HERE (i.e. clockwork)', 'OAUTH SECRET HERE', current_user.fb_token, current_user.fb_secret) @invoices = client.invoice.list :status => 'unpaid' #If returns error if(@invoices['error']) #If first error, get new request token and try again if session[:fb_error].blank? session[:fb_error] = true redirect_to fb_request_token_path else session[:fb_error] = nil redirect_to freshbooks_path, :notice => 'There was an authentication error' end end end