|
@@ -73,11 +73,18 @@ class ResUsersSettings(models.Model):
|
|
|
return True
|
|
return True
|
|
|
except Exception as e:
|
|
except Exception as e:
|
|
|
_logger.error(f"Failed to refresh Google token for user {self.user_id.name}: {str(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):
|
|
def _get_google_access_token(self):
|
|
|
"""Get a valid Google access token, refreshing if necessary"""
|
|
"""Get a valid Google access token, refreshing if necessary"""
|