From: Giorgio Ravera Date: Tue, 15 Dec 2020 16:50:08 +0000 (+0100) Subject: Fixed issue "Refresh not working? #3" X-Git-Tag: v0.7~7 X-Git-Url: http://git.giorgioravera.it/?a=commitdiff_plain;h=9ffd45a1141baa7e0b2cb12538c16c4d43ddd48b;p=mercedes_me_api.git Fixed issue "Refresh not working? #3" --- diff --git a/oauth.py b/oauth.py index d0f405d..5863ace 100644 --- a/oauth.py +++ b/oauth.py @@ -141,7 +141,7 @@ class MercedesMeOauth: auth_code = input() data = f"grant_type=authorization_code&code={auth_code}&redirect_uri={REDIRECT_URL}" - token = GetToken(URL_OAUTH_TOKEN, self.headers, data) + token = GetToken(URL_OAUTH_TOKEN, self.headers, data, refresh=False) # Check Token if not self.CheckToken(token): @@ -159,8 +159,8 @@ class MercedesMeOauth: ######################## def RefreshToken(self): - data = f"grant_type=refresh_token&refresh_token={self.refresh_token}" - token = GetToken(URL_OAUTH_TOKEN, self.headers, data) + data = f"grant_type=refresh_token&refresh_token={self.refresh_token}" + token = GetToken(URL_OAUTH_TOKEN, self.headers, data, refresh=True) # Check Token if not self.CheckToken(token): diff --git a/query.py b/query.py index 72d0574..5f547da 100644 --- a/query.py +++ b/query.py @@ -64,7 +64,7 @@ def GetResource(resourceURL, config): ######################## # GetToken ######################## -def GetToken(tokenURL, headers, data): +def GetToken(tokenURL, headers, data, refresh=True): res = requests.post(tokenURL, data = data, headers = headers) try: data = res.json() @@ -79,14 +79,23 @@ def GetToken(tokenURL, headers, data): if ("reason" in data): reason = data["reason"] else: - if res.status_code == 302: - reason = "The request scope is invalid" - elif res.status_code == 400: - reason = "The redirect_uri differs from the registered one" - elif res.status_code == 401: - reason = "The specified client ID is invalid" + if (refresh == False): + # New Token Errors + if res.status_code == 302: + reason = "The request scope is invalid" + elif res.status_code == 400: + reason = "The redirect_uri differs from the registered one" + elif res.status_code == 401: + reason = "The specified client ID is invalid" + else: + reason = "Generic Error" else: - reason = "Generic Error" + # Refresh Token Errors + if res.status_code == 400: + reason = "The given refresh token is not valid or was already used." + else: + reason = "Generic Error" + data["reason"] = reason data["code"] = res.status_code