class Attio::OAuth::Client

def exchange_code_for_token(code:, state: nil)

Exchange authorization code for access token
def exchange_code_for_token(code:, state: nil)
  raise ArgumentError, "Authorization code is required" if code.nil? || code.empty?
  params = {
    grant_type: "authorization_code",
    code: code,
    redirect_uri: redirect_uri,
    client_id: client_id,
    client_secret: client_secret
  }
  response = make_token_request(params)
  Token.new(response.merge(client: self))
end