bin/authenticate
#!/usr/bin/env ruby# frozen_string_literal: true require 'dotenv/load'require 'bundler/setup' require 'fulfil'require 'oauth2' def get_token client_id = ENV.fetch('FULFIL_CLIENT_ID') client_secret = ENV.fetch('FULFIL_CLIENT_SECRET') subdomain = ENV.fetch('FULFIL_SUBDOMAIN') base_url = "https://#{subdomain}.fulfil.io" # "oauth/authorize" client = OAuth2::Client.new(client_id, client_secret, site: base_url) authorize_url = client.auth_code.authorize_url( redirect_uri: 'urn:ietf:wg:oauth:2.0:oob', scope: ['sale.channel:read'].join(','), access_type: 'offline_access' ) output 'Open this URL:' system %x[echo "#{authorize_url.to_s}" | pbcopy] output authorize_url.to_s output 'Copy the generated token. Paste it here:' auth_token = gets.chomp output '' token = client.auth_code.get_token(auth_token) output 'Results:' pp token.to_hash output '' output 'Offline access token:' output token.to_hash.dig('offline_access_token')end def output(text, lines: 2) puts text puts "\n" * linesend def fulfil @fulfil ||= Fulfil::Client.new( subdomain: ENV.fetch('FULFIL_SUBDOMAIN'), token: ENV.fetch('FULFIL_OAUTH_TOKEN') )end get_token