]> git.giorgioravera.it Git - mercedes_me_api.git/commitdiff
Fixed issue "Refresh not working? #3"
authorGiorgio Ravera <giorgio.ravera@gmail.com>
Tue, 15 Dec 2020 16:50:08 +0000 (17:50 +0100)
committerGiorgio Ravera <giorgio.ravera@gmail.com>
Thu, 17 Dec 2020 10:13:31 +0000 (11:13 +0100)
oauth.py
query.py

index d0f405d0c7023ae3d5b78679cafb40de2667dd81..5863acedea16026d94d1410ee39a9204b6a1d1d0 100644 (file)
--- 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):
index 72d05742f14fe56ce44d2d2fa370678ea059fd45..5f547da3c7a6831e2c13187c5a6e134e3db5aacc 100644 (file)
--- 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