src/eric7/EricNetwork/EricGoogleMail.py

branch
eric7
changeset 9245
6ee1705a1cb9
parent 9221
bf71ee032bb4
child 9413
80c06d472826
--- a/src/eric7/EricNetwork/EricGoogleMail.py	Sun Jul 17 18:48:09 2022 +0200
+++ b/src/eric7/EricNetwork/EricGoogleMail.py	Mon Jul 18 14:46:23 2022 +0200
@@ -20,6 +20,7 @@
 from PyQt6.QtCore import pyqtSlot, pyqtSignal, QObject, QUrl, QUrlQuery
 from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout
 
+from EricWidgets import EricMessageBox
 from EricWidgets.EricTextInputDialog import EricTextInputDialog
 
 import Globals
@@ -90,9 +91,16 @@
             approvalCode = urlQuery.queryItemValue(
                 "approvalCode", QUrl.ComponentFormattingOption.FullyDecoded
             )
-            if approvalCode:
-                self.approvalCodeReceived.emit(approvalCode)
-                self.close()
+        elif url.toString().startswith(("http://localhost", "https://localhost")):
+            urlQuery = QUrlQuery(url)
+            approvalCode = urlQuery.queryItemValue(
+                "code", QUrl.ComponentFormattingOption.FullyDecoded
+            )
+        else:
+            approvalCode = None
+        if approvalCode:
+            self.approvalCodeReceived.emit(approvalCode)
+            self.close()
 
     def load(self, url):
         """
@@ -236,15 +244,24 @@
         @param authCode received authorization code
         @type str
         """
-        self.__session.fetch_token(
-            self.__clientConfig["token_uri"],
-            client_secret=self.__clientConfig["client_secret"],
-            code=authCode,
-        )
-        self.__saveToken(self.__session.token)
+        try:
+            self.__session.fetch_token(
+                self.__clientConfig["token_uri"],
+                client_secret=self.__clientConfig["client_secret"],
+                code=authCode,
+            )
+            self.__saveToken(self.__session.token)
 
-        # authorization completed; now send all queued messages
-        self.__doSendMessages()
+            # authorization completed; now send all queued messages
+            self.__doSendMessages()
+        except Exception as err:
+            EricMessageBox.critical(
+                self,
+                self.tr("Google Authorization"),
+                self.tr(
+                    """<p>The authorization via Google failed.</p><p>Reason: {0}</p>"""
+                ).format(str(err)),
+            )
 
     def __doSendMessages(self):
         """

eric ide

mercurial