docs: def _access_token_endpoint(self, grantType, extraParams={}):
          """
          Base exchange of data for an access_token.
          """
          response = requests.post(
              self._format_url(OAUTH2_ROOT + 'access_token'),
              data = _extend({
                  'grant_type': grantType,
                  'client_id': self.client.get('client_id', ''),
                  'client_secret': self.client.get('client_secret', ''),
                  'redirect_uri': self.client.get('redirect_uri', '')
              }, extraParams))
          
          data = response.json()
          if 'error' in data or 'error_description' in data:
              raise _token_error_from_data(data)
          else:
              return self.set_creds(data)