docs: def _obtain_token(self):
          """Obtain an auth token from client id and client secret."""
  
          # don't renew token if hasn't expired yet
          if self.expiration and self.expiration > datetime.datetime.now():
              return
  
          resp = requests.post("{}/1.1/oauth/token".format(API_URL), data={
              "client_id": self.client_id,
              "client_secret": self.client_secret,
              "grant_type": "client_credentials"
          }).json()
  
          if "error" in resp:
              raise APIError("LibCal Auth Failed: {}, {}".format(resp["error"], resp.get("error_description")))
  
          self.expiration = datetime.datetime.now() + datetime.timedelta(seconds=resp["expires_in"])
          self.token = resp["access_token"]
          print(self.token)