From be66d04bf3db3d9397f2bff331645d7fbadc6856 Mon Sep 17 00:00:00 2001 From: Youssef Badzi <95358038+badziyoussef@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:27:43 +0100 Subject: [PATCH] fix retrieving google oauth token --- django_mailbox/google_utils.py | 4 ++++ django_mailbox/transports/gmail.py | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/django_mailbox/google_utils.py b/django_mailbox/google_utils.py index c9c63010..ae5047ec 100644 --- a/django_mailbox/google_utils.py +++ b/django_mailbox/google_utils.py @@ -59,6 +59,10 @@ def google_api_get(email, url): if r.status_code == 401: # Go use the refresh token refresh_authorization(email) + # Force use of the new token + headers = dict( + Authorization="Bearer %s" % get_google_access_token(email), + ) r = requests.get(url, headers=headers) logger.info("I got a %s", r.status_code) if r.status_code == 200: diff --git a/django_mailbox/transports/gmail.py b/django_mailbox/transports/gmail.py index 99e8189a..68bce6aa 100644 --- a/django_mailbox/transports/gmail.py +++ b/django_mailbox/transports/gmail.py @@ -35,8 +35,10 @@ def _connect_oauth(self, username): access_token = None while access_token is None: try: - access_token = get_google_access_token(username) + # token refreshed here when expired google_email_address = fetch_user_info(username)['email'] + # retrieve token from db + access_token = get_google_access_token(username) except TypeError: # This means that the google process took too long # Trying again is the right thing to do