senshi-x / ComdirectPostboxDownloader

Downloads PDF files from the Comdirect postbox
GNU General Public License v3.0
87 stars 22 forks source link

AttributeError: 'Connection' object has no attribute 'access_token' #13

Closed Charliopoulos closed 3 years ago

Charliopoulos commented 3 years ago

Ich bekomme diese Fehlermeldung wenn ich versuche den Download zu beginnen:

Choose an option [1-6] / [0]: 4 -4- 'access_token' Traceback (most recent call last): File "..\ComdirectPostboxDownloader\main.py", line 385, in main = Main(dirname) File "..\ComdirectPostboxDownloader\main.py", line 29, in init self.showMenu() File "..\ComdirectPostboxDownloader\main.py", line 108, in showMenu self.loadDocuments() File "..\ComdirectPostboxDownloader\main.py", line 154, in loadDocuments messagesMeta = self.conn.getMessagesList(0, 1) File "..\ComdirectPostboxDownloader\ComdirectConnection.py", line 259, in getMessagesList "Authorization": "Bearer " + self.access_token, AttributeError: 'Connection' object has no attribute 'access_token'

Muss ich was zusätzliches aktivieren?

fabifighter007 commented 3 years ago

selbiger Fehler bei mir

senshi-x commented 3 years ago

Infos wären hilfreich. OS? Python-Version? Alle libraries aus requirements.txt installiert? Settings etc. alles korrekt befüllt?

So ist das leider einfach zu generisch.

fabifighter007 commented 3 years ago

Hallo! Hier sind nähere Informationen: requirements wurden installiert.

Systeme: 1) Windows 10 Rechner mit Python 3.8.2 2) Kali-VM mit Python 3.9.2

ERROR:

Choose an option [1-6] / [0]: 6
-6-
'access_token'
Traceback (most recent call last):
  File "/home/kali/Projekte/stock/ComdirectPostboxDownloader/./main.py", line 385, in <module>
    main = Main(dirname)
  File "/home/kali/Projekte/stock/ComdirectPostboxDownloader/./main.py", line 29, in __init__
    self.showMenu()
  File "/home/kali/Projekte/stock/ComdirectPostboxDownloader/./main.py", line 117, in showMenu
    self.__loadDocuments()
  File "/home/kali/Projekte/stock/ComdirectPostboxDownloader/./main.py", line 154, in __loadDocuments
    messagesMeta = self.conn.getMessagesList(0, 1)
  File "/home/kali/Projekte/stock/ComdirectPostboxDownloader/ComdirectConnection.py", line 259, in getMessagesList
    "Authorization": "Bearer " + self.access_token,
AttributeError: 'Connection' object has no attribute 'access_token'

CONFIG:

[DEFAULT]

#comdirect login data
user=*****
pwd=****

#comdirect API access data (https://kunde.comdirect.de/itx/oauth/privatkunden)
clientId=******, die via API Access erhaltbar ist (https://kunde.comdirect.de/itx/oauth/privatkunden)
clientSecret=*******, welches ebenfalls in vorigem Link verfügbar ist

#output directory
outputDir=output

#dryRun [True/False], bei dryRun=True wird nichts heruntergeladen; nur simuliert
dryRun=False

#useSubFolders[True/False], bei True werden Dokumente in Unterverzeichnisse sortiert ()
useSubFolders=False

#downloadOnlyFilenames [True/False], bei True werden nur Dateien heruntergeladen, die mit einem bestimmten Namen anfangen. Alle anderen werden übersprungen.
downloadOnlyFilenames=True
# gehört zu downloadOnlyFilenames: hier werden die Dateinamen angegeben, welche heruntergeladen werden sollen als Dictionary: 
downloadOnlyFilenamesArray={"Kauf", "Jahressteuerbescheinigung", "Gutschrift", "Dividendengutschrift", "Ertragsgutschrift"}

#[True/False], if True, only documents in archive will be downloaded
downloadOnlyFromOnlineArchive=True

#not yet used WIP
range=
#useLocalArchive=
#localArchiveDir=
#moveToLocalArchiveBeforeDate=

Login wurde mit Postman getestet.

Danke!

fr34kyn01535 commented 3 years ago

Die Meldung ist quasi ein "login failed". Der Fehler ist recht leicht zu beheben, die clientId variable muss nur vernünftig gesetzt werden.

Die Zeilen sollten wie folgt aussehen:

...
#comdirect login data
user=3423443
pwd=662312

#comdirect API access data (https://kunde.comdirect.de/itx/oauth/privatkunden)
clientId=User_231231230123901231231323123
clientSecret=543534IUJHDSDLOLWUTXD23323

#output directory
...
Charliopoulos commented 3 years ago

Hallo @fr34kyn01535, was meinst du denn mit vernünftig? Ich sehe in deinem Beispiel keine besondere Schreibweise o.ä. und die Zeilen sehen ja genau so aus wie in der Anleitung. Kannst du evtl. mehr Infos geben?

fr34kyn01535 commented 3 years ago

Schau doch in die config vom @fabifighter007, er hat nach dem Token das komma und den Hilfetext drin 😅. Sollte eventuell im sample eher als Kommentar gemacht werden.

retiredHero commented 3 years ago

@Charliopoulos, kannst du mal deinen settings.ini-Auschnitt teilen (mit ge-x-ten Werten für user/pwd/cliendId/clientSecret bitte); dann können wir da mal drauf schauen (ob du auch ggf. noch nicht auskommentierte Kommentare in der Zeile stehen hast o.ä.).

@fabifighter007 kannst du bestätigen, dass, wenn du die beiden Config-Zeilen aufräumst, also ", die via API Access erhaltbar ist (https://kunde.comdirect.de/itx/oauth/privatkunden)" löschst und ", welches ebenfalls in vorigem Link verfügbar ist" löschst - dass es dann bei dir funktioniert ohne den Fehler?

senshi-x commented 3 years ago

Keine Reaktion der Issue-Ersteller mehr, deshalb zu.

vacy commented 2 years ago

i had the same issue and solved it by resetting and recreating the oauth credentials at comdirect.

tomkoenecke commented 2 years ago

Ich habe nach einem Reset der OAuth ClientCredentials auf comdirect.de das gleiche Problem, vorher lief es immer.

Habe an der Formatierung in der settings.ini nichts geändert und auch nochmal gecheckt ob die Formatierung mit der in der Beispieldatei übereinstimmt. Ein Vermutung war, dass cocmdirect vielleicht ein bisschen braucht um die API freizuschalten, aber über Nacht hat sich nichts verändert. Ein nochmaliger Reset oder ein Löschen und neu Einrichten der Zugangsdaten auf comdirect.de hat auch keine Wirkung.

Hier die Response in der Methode Connection.__getOAuth(self)

{'error': 'invalid_grant', 'error_description': 'unprocessable entity'}

tomkoenecke commented 2 years ago

Login wurde mit Postman getestet.

Da kommt bei mir auch eine volle, saubere Antwort

tomkoenecke commented 2 years ago

Habe den Fehler gefunden, hatte einen inline-Kommentar mit # hinter mein Passwort gestellt, was dann mitgeparst wurde. Also höchstwahrscheinlich auch das Problem des originalen Issue Erstellers..

Als allgemeine Verbesserung könnte man die Response in getOAuth auf bekannte Fehlerbeschreibungen checken und einen entsprechenden Hinweis geben.

senshi-x commented 2 years ago

Danke für die Antwort zur Lösungsfindung! Das hilft sehr, wenn ich die Fehler nicht selbst reproduzieren kann. Habe nochmal ein paar Errorhandler eingebaut und das Userfeedback bei Fehlern in der Anwendung etwas verbessert, so dass man zumindest einen Tipp bekommt, was falsch sein könnte. EDIT: Und ein Extra-Hinweis, dass keine Inline-Kommentare erlaubt sind.