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

Reply via email to