Переглянути джерело

Squashed 'google_api/' changes from 3e21126..ec54c81

ec54c81 fix: mejorar manejo de renovación de tokens Google API - mantener tokens en errores temporales, solo eliminar en credenciales inválidas

git-subtree-dir: google_api
git-subtree-split: ec54c81d9906964fd73a6715d0c96726c37c8ea5
root 5 місяців тому
батько
коміт
8157d99d64
1 змінених файлів з 12 додано та 5 видалено
  1. 12 5
      models/res_users_settings.py

+ 12 - 5
models/res_users_settings.py

@@ -73,11 +73,18 @@ class ResUsersSettings(models.Model):
             return True
         except Exception as e:
             _logger.error(f"Failed to refresh Google token for user {self.user_id.name}: {str(e)}")
-            # Delete invalid tokens
-            self.env.cr.rollback()
-            self.sudo()._set_google_auth_tokens(False, False, False)
-            self.env.cr.commit()
-            return False
+            
+            # Solo eliminar tokens si es definitivamente un error de credenciales inválidas
+            if 'invalid_grant' in str(e) or 'invalid_token' in str(e):
+                _logger.warning(f"Invalid refresh token for user {self.user_id.name}, deleting tokens")
+                self.env.cr.rollback()
+                self.sudo()._set_google_auth_tokens(False, False, False)
+                self.env.cr.commit()
+                return False
+            else:
+                # Para otros errores (timeout, red, etc.), mantener los tokens y reintentar después
+                _logger.warning(f"Temporary error refreshing token for user {self.user_id.name}, keeping tokens for retry")
+                return False
 
     def _get_google_access_token(self):
         """Get a valid Google access token, refreshing if necessary"""