Hi Claus It looks like that dropbox will now only issue short-lived access tokens and working with additional refresh tokens. From dropbox doc: On September 30th, 2021, Dropbox will retire the creation of long-lived access tokens. Apps that require background (“offline”) access but have not yet implemented refresh tokens will be impacted. Implement refresh tokens: For apps that "Want to interact with the Dropbox API when a user isn’t actively interacting with the app (“offline” access)", we offer a long-lived refresh_token that can be used to request a new, short-lived access token.
I think there must be an adjustment in the API Camel is using. Reto -----Original Message----- From: Claus Ibsen <claus.ib...@gmail.com> Sent: Monday, April 11, 2022 7:35 PM To: users@camel.apache.org Subject: Re: DropBox expired_token Hi Ah is that because your token is some kind of developer token that is short lived? Or do you know if its standard at DropBox to have tokens limited to 4 hours? If its so short lived, then we should look at a way for Camel to be able to automatic extend the token expiry, fetch a updated token, or what means DropBox supports. On Mon, Apr 11, 2022 at 8:14 AM Reto Peter <reto.pe...@advanceit.ch> wrote: > > Hi > > I have successfully used the dropbox component for download, upload and > delete files. > You can see my implementation below, cause there was some important > issues to solve before it worked > > Actually the only problem I have is the expired_token. The generated token > (which I created in the app console) does always expire after 4 hours and > then I get the error message from the component: > InvalidAccessTokenException: {"error_summary": > "expired_access_token/...", "error": {".tag": "expired_access_token"}} > > I read about other SDK which access the dropbox API, that the API does handle > to refresh the access_token if its expired. > What is my mistake? Is there a way to generate a permament access_token in > dropbox itself or how? > > Here is my route for DOWNLOAD: > from("timer://simpleTimer?period=10000") > .to("dropbox://get?accessToken={{dropbox.accessToken}}" > + "&clientIdentifier={{drobbox.clientIdentifier}}" > + "&remotePath=/from_cellular") > .log("Dropbox download 'from Cellular': Check if there are files > available from Cellular in DropBox CellularEDI") > .choice() > .when(simple("${header:DOWNLOADED_FILES} == ''")) > .log("Dropbox download: No files available") > .when(simple("${header:DOWNLOADED_FILES} == null && > ${header:DOWNLOADED_FILE} != ''")) > .log("Dropbox download: 1 file available: > '${header:DOWNLOADED_FILE}'") > > .to("file:{{dir.from.cellular}}?fileName=${header:DOWNLOADED_FILE}") > .toD("dropbox://del?accessToken={{dropbox.accessToken}}" > + "&clientIdentifier={{drobbox.clientIdentifier}}" > + "&remotePath=${header:DOWNLOADED_FILE}") > .when(simple("${header:DOWNLOADED_FILES} != '' && > ${header:DOWNLOADED_FILE} == null")) > .log("Dropbox download: Several files available: > '${header:DOWNLOADED_FILES}'") > .split(simple("${in.body.entrySet}")) > .setHeader("DropBoxFileName", simple("${body.getKey}")) > .setBody(simple("${body.getValue}")) > .log("Dropbox download: Save file: > ${header.DropBoxFileName}") > > .to("file:{{dir.from.cellular}}?fileName=${header.DropBoxFileName}") > .toD("dropbox://del?accessToken={{dropbox.accessToken}}" > + "&clientIdentifier={{drobbox.clientIdentifier}}" > + "&remotePath=${header.DropBoxFileName}"); > > Here is my route for UPLOAD: > from("file:{{dir.to.cellular}}?preMove=.inprogress&move=.done&delay=1000") > .log("Dropbox upoad: Trying to upload file ${file:name} to DropBox > CellularEDI") > .setHeader(DropboxConstants.HEADER_PUT_FILE_NAME, > simple("${file:name}")) > .to("dropbox://put?accessToken={{dropbox.accessToken}}" > + "&clientIdentifier={{drobbox.clientIdentifier}}" > + "&uploadMode=force" > + "&remotePath=/to_cellular/") > // The upload does not work if I don't put the last '/' > .choice() > .when(simple("${body} == 'OK'")) > .log("Dropbox upload success: File ${file:name} was uploaded to > DropBox folder: ${header:UPLOADED_FILE}") > .otherwise() > .log("Dropbox upload FAILED: File ${file:name} Failed > with result: ${body}"); > > > Environment: > Camel 3.16.0 > SpringBoot 2.6.4 > Java 11 > > Reto -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2