diff -r 3bf1a02df07a -r 6ee1705a1cb9 src/eric7/EricNetwork/EricGoogleMail.py --- 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): """