Der Dropbox-Upload per Python-Script Datei mit demRaspberry Pi über die Schnittstelle API v2 funktioniert plötzlich nicht mehr.
Hat jemand das gleiche Problem ?
Ich glaube, dass Sie da besser aufgehoben sind:
https://www.dropboxforum.com/t5/Developer-API/ct-p/101000041
Vielen Dank für den Link. Ich konnte dort die Lösung für mein Problem finden.
Hi! ist vielleicht eine komische Frage, aber würde es ihnen etwas ausmachen ihr script zu teilen? Ich versuche seit längerer Zeit schon einen code zu schreiben der von meinem raspberry pi dateien auf dropbox hochlädt, bekomme es aber leider nicht hin. Würde mir wirklich helfen!
Hallo und guten Abend,
für den Dropbox-Upload von meinem Raspberrypi benutze ich folgendes script:
#!/usr/bin/python3import dropboxdb = dropbox.Dropbox('nnnnn') # nnnnn = hier den token eingeben! Anführungsstriche nicht weglassen!!fname = 'nnnnn.nn' # Name der hochzuladenden lokalen Dateixname = '/nnnnn.nnn' # Name der Datei in Dropboxf = open(fname, 'rb') # Datei öffnenresponse = db.files_upload(f.read(), xname) # Datei hochladenprint('uploaded:', response)f.close() # Datei schließen
Ich hoffe, ich konnte Dir weiterhelfen.Und viel Spaß beim Basteln und programmieren.
Hi, erstmal vielen Dank für deine rasche Antwort! Der Access token läuft ja eigentlich nach ca 4 stunden ab, ist das bei diesem script auch so? danke nochmal!
Grüße!
Hallo,
die Sache mit dem Access-token-Ablauf nach 4 Stunden ist ein ganz anderer Film. Das hat irgendwas mit der ioBroker-Sicherung in Dropbox zu tun. Das wird ja nicht Dein Ding sein. Ich nutzte meinen token schon seit Jahren; der läuft nicht ab. Das würde ja auch keinen Sinn machen. Also: keine Panik. Gehe die Sache ganz ruhig an. Generiere Dir zunächst den token und ****** dann aus, ob der Upload funktioniert.
Viele Grüße
Hi! Super! Also muss ich einfach nur diesen Token verwenden? Vielen Dank für deine Hilfe!
Ja, genau. - So ist es richtig. Token generieren und abspeichern. Man kann ihn später nicht mehr auf der Web-Seite einsehen. Wenn er verloren geht, kannst du dir einen neuen generieren.
Ok Super! Dann probier ich das mal aus, vielen Dank!
Hi, sorry das ich nochmal störe. bekomme aber leider nach gewisser zeit folgende Error message:
Unable to refresh access token without refresh token and app key
Hast du eine Idee was das Problem sein könnte?
Irgendwas ist da schief gelaufen. Am besten, du beginnst noch mal von vorne. Ich gehe davon aus, dass du ein Dropbox-Konto hast. Dann gehe auf die developers-Seite und lösche die aktuelle App. Beginne jetzt von vorn; gehe in die App Console und dann auf "create app". Klicke „Scoped access“ und dann „App folder“ an. Gib der App einen Namen und klicke auf „create app“. Gehe jetzt auf Permissions und erteile unter Files und folders den Schreibzugriff. Jetzt wieder zurück zu Settings. Klicke auf Generated access token. Jetzt erscheint darunter das token als lange Zeichenkette. Kopiere das token auf die Anwendung in deinem Raspi. -
So habe ich es heute nochmals bei mir ausprobiert und es hat funktioniert. Noch ein Tipp: Du kannst die Kommunikation zwischen Raspi und Dropbox auch testen ohne eine Datei hochzuladen. Benutze folgendes script:
#!/usr/bin/python3
db = dropbox.Dropbox(„token“)
print(„Account infos: “, db.users_get_current_account())
Wenn die Kommunikation funktioniert, werden Informationen des Accounts ausgegeben, ansonsten eine Fehlermeldung.
Viel Erfolg
Ja, das heute generierte token beginnt mit "sl". Die 4 Stunden sind noch nicht abgelaufen. Das alte token nutze ich schon seit vielen Jahren. Bin gespannt, was jetzt passiert.
Das habe ich auf youtube gefunden:
"No expiration" wäre dann die Lösung.
Auf meiner Seite wurde diese Möglichkeit aber nicht angezeigt.
Du hast Recht. Mein token lebte nur 4 Studen. Vermutlich wird mein altes token auch irgendwann das gleiche Schicksal teilen. Ich werde die Sache im Auge behalten. Wenn ich näheres herausbekomme melde ich mich in jedem Fall.
Darf ich fragen, ob du dich schon länger mit dem Rasperry pi beschäftigst und welche Projekte du verfolgst?
Also habe meinen Raspberry Pi jetzt seit ca einer Woche, versuche gerade posts von instagram runterzuladen und auf dropbox hoch. Den instagram teil hab ich schon. Aber mache das nur zum spaß.
Hi, ich möchte mich nochmals kurz melden. Zwischenzeitlich habe ich mit verschiedenen scripts versucht, über den den OAuth-App-Autorisierungsablauf standardmäßige Dropbox-API-Zugriffstoken zu erhalten. Dies hat auch wunderbar funktioniert, aber auch hier handelt es sich um kurzlebige Zugriffstoken, die man schon (wie bereits von dir berichtet) an dem Präfik „sl“ erkennt. Nun habe ich begonnen, mich in die OAuth-Dokumentation einzulesen (sehr umfangreich). So wie ich das sehe, lässt sich die Sache nur per OAuth mit Aktualisierungstoken lösen. Um dies zu bewerkstelligen (vor allem, wenn der Aktualisierungsprozess automatisch ablaufen soll) wird man sich wohl tiefer in die Programmiertechnik einarbeiten müssen. Weiter bin ich noch nicht gekommen. Grüße
Hi, ich habe einen Lösungsweg gefunden. Erstelle zunächst eine OAuth-App-Autorisierungs-URL um einen Autorisierungscode zu erhalten. Mit Autorisierungscode, app-key und app-secret startest du dann eine „curl-Eingabe“ Die Antwort ist ein Access-Token und ein Aktualisierungs-Token. Details hat Greg-DB in diesem Forum beschrieben.
https://www-dropboxforum-com.translate.goog/t5/Discuss-Dropbox-Developer-API/Refresh-Tokens/td-p/590227?_x_tr_sl=en&_x_tr_tl=de&_x_tr_hl=de&_x_tr_pto=sc
Autorisierungs-URL:
https://www.dropbox.com/oauth2/authorize?client_id=APPKEYHERE&response_type=code&token_access_type=offline
curl-Eingabe:
curl https://api.dropbox.com/oauth2/token \
-d code=AUTHORIZATIONCODE \
-d grant_type=authorization_code \
-u APPKEY:APPSECRET
Nun hast du einen Aktualisierungs-Token und kannst ihn in dein script einfügen. Das kann z.B. so aussehen:
import dropbox
db = dropbox.Dropbox(
app_key = <APP_KEY>,
app_secret = <APP_SECRET>,
oauth2_refresh_token = <REFRESH_TOKEN>
Das Aktualisierungs-Token läuft nicht ab. Im Hintergrund werden automatisch neue kurzlebige Zugriffstoken erzeugt. Du musst die ganze Aktion also nur einmal machen.
Quelle:
https://stackoverflow-com.translate.goog/questions/71668845/how-to-correctly-implement-refresh-token-with-dropbox-python-sdk?_x_tr_sl=en&_x_tr_tl=de&_x_tr_hl=de&_x_tr_pto=sc
Ich habe das o.a Prozedere bei mir erfolgreich getestet und denke, dass auch dein Problem so gelöst werden kann..
- Grüße
https://www-dropboxforum-com.translate.goog/t5/Discuss-Dropbox-Developer-API/Refresh-Tokens/td-p/590...
https://www.dropbox.com/oauth2/authorize?client_id=APPKEYHERE&response_type=code&token_access_type=o...
https://stackoverflow-com.translate.goog/questions/71668845/how-to-correctly-implement-refresh-token...