From bee2d025f475a9a69f39ab56d7667a3b962bc38c Mon Sep 17 00:00:00 2001 From: Enrique Barcelli Date: Sat, 5 Apr 2025 16:57:41 +0800 Subject: [PATCH] Rebuild the token exchange around http.client with ssl certificates disabled --- authhandler.py | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/authhandler.py b/authhandler.py index 66b81af..2fcb744 100644 --- a/authhandler.py +++ b/authhandler.py @@ -17,7 +17,11 @@ from pathlib import Path from requests_oauthlib import OAuth2Session import config - +import http.client +import ssl +from urllib.parse import quote +import string +import json class AuthHandler: @@ -45,9 +49,24 @@ class AuthHandler: if not state: if not self.state: print('state is not found. init the auth flow first or give the state as a parameter.') state = self.state - oauth = OAuth2Session(self.clientId, state=state, redirect_uri=redirectUri) - oauthToken = oauth.fetch_token(self.tokenUrl, client_secret=self.clientSecret,authorization_response=response) - self.token = oauth._client.access_token + code = response.split("&code=")[1] + tokenDomain = self.tokenUrl.split("://")[1] + tokenDomain = tokenDomain.split("/")[0] + tokenAddress = self.tokenUrl.split(tokenDomain)[1] + conn = http.client.HTTPSConnection(tokenDomain,context=ssl._create_unverified_context()) + payload = ( + 'grant_type=authorization_code'+ + '&redirect_uri='+quote(redirectUri)+ + '&client_id='+self.clientId+ + '&client_secret='+self.clientSecret+ + '&code='+code + ) + headers = { + 'Content-Type': 'application/x-www-form-urlencoded' + } + conn.request("POST", tokenAddress, payload, headers) + res = conn.getresponse() + self.token = json.loads(res.read())['access_token'] self.cacheHandler.setCache(self.clientId, self.token) return self.token