Hilfe! Dropbox RestAPI
Hallo Froum,
Dropbox hat seine API umgestellt und erwartet für den Endpunkt "content" nun keinen Body mehr, sondern alles im Header.
Ich versuche nun schon seit Stunden erfolglos meinen Dateipfad zu übermitteln.
Wie gesagt, der Endpunkt "api" läuft wie gewohnt mit
let auth := {
Authorization: "Bearer dfökdfhäkdsfhäksdfhäskdfhäskdfh",
'Content-Type' ...usw
}
Der Endpunkt "content" möchte aber nun:
curl -X POST https://content.dropboxapi.com/2/files/get_preview \
--header "Authorization: Bearer " \
--header "Dropbox-API-Arg: {\"path\": \"/word.docx\"}"
über
let auth := {
Authorization: "Bearer dfökdfhäkdsfhäksdfhäskdfhäskdfh",
'Dropbox-API-Arg' : {\"path\": \"/word.docx\"}
}
läuft es nicht...
Ich muss alles in den URL Request stecken, damit es geht
http("POST", "https://content.dropboxapi.com/2/files/get_preview?authorization=Bearer dhdshgdshfeefgmfj75WfJwMyYdcrNejak--U8X4Mnv5?arg="
jetzt muss aber noch das "arg" im Format {\"path\": \"/Mein/Pfad/Datei.pdf\"} mit in den Request - und da komme ich nicht weiter. Gibt es eine chance das als JSON im http request zu übermitteln?
POSTMAN gibt mir übrigens aus:
Error in call to API function "files/get_preview": URL parameter "arg": could not decode input as JSON
Hat da jemand eine Idee?
6 Antworten
-
Ich weiß nicht ob es hilft aber mit der Funktion url (string,object) bekommt man eine korrekt kodierte url:
url(urlstring,{
arg1:volume1,
arg2:volume2,
arg3:volume3
})urlstring?arg1=volume1&arg2=volume2&arg3=volume3
Leo
-
Hallo Leo,
es hat tatsächlich am Ende so funktioniert, allerdings ist die Dropbox API leider was PDFs angeht etwas störrisch. Man kann über einen "share" link ein PDF direkt downloaden - das bringt mir aber nichts für die NINOX importFile funktion. Ich habe nun letztendlich alle Daten auf meinen FTP Server gelegt und kann von da aus via importFile auf die PDF zugreifen.
Ich habe allerdings ein Problem mit Sonderzeichen. vielleicht hast Du da einen Tipp.
Ich habe Unterordner im FTP auf die ich via importFile(this, Link) zugreife. Den Link setze ich mir vorher aus einem Feld "Ordner", einem Feld "Dateiname" und hard codiertem http-Pfad zusammen. Leider ergeben alle importFile mit einem Sonderzeichen im Link keinen korrekten download. Mit urlEncode usw. kann ich nicht arbeiten, da die Ordner auf dem Server ja tatsächlich so heißen, wie sie heißen. z.B: "212990699_Berlin_Bürgerstraße 55".
Danke
Tobias
-
Hallo Tobias,
versuche es mal so:
---
let me:=this;let downloadURL:=DEINPFAD+"/"+urlEncode(me.Ordner)+"/"+urlEncode(me.Dateiname);
importFile(this, downloadURL,me.Dateiname)
Leo
---
-
Hallo Leo, danke für den hinweis. Leider führt das nicht zum Erfolg.
Aus "212990271_Berlin_Schönhauser Straße 1" wird dadurch "212990271_Berlin_Sch%C3%B6nhauser%20Stra%C3%9Fe%201" - und dieser Ordner existiert ja so nicht.
Da muss im Hintergrund etwas falsch laufen bei der codierung von Sonderzeichen in der importFile Funktion.
Schade, da muss ich wohl manuell die Ordner auf dem FTP Server bereinigen. Mit replace() komm ich ja auch nicht weiter - die Ordner haben numal Straße und Umlaute im Namen...
Danke Dir trotzdem
LG
Tobias
-
Hallo Tobias,
ich habe jetzt auf unserem Server einen Ordner "212990271_Berlin_Schönhauser Straße 1" erstellt und dort eine Datei namens "pöäd.pdf" gespeichert. Mit der Formel:
let downloadURL:=DEINPFAD+"/"+urlEncode("212990271_Berlin_Schönhauser Straße 1")+"/"+urlEncode("pöäd.pdf");
importFile(this, downloadURL,"pöäd.pdf")
wird die Datei "pöäd.pdf" mit diesem Namen in Ninox gespeichert.
Leo
-
Guten Morgen Leo,
ich bin das heute mit frischem Kopf und frischem Kaffee nochmal angegangen - du hast recht, es funktioniert so! Vielleicht waren es gestern zu viele Lösungsansätze :)
Auf jeden Fall danke für deine Mühe das nachzuvollziehen!
LG
Tobias
Content aside
- vor 3 JahrenZuletzt aktiv
- 6Antworten
- 473Ansichten