You might see that the Dropbox Community team have been busy working on some major updates to the Community itself! So, here is some info on what’s changed, what’s staying the same and what you can expect from the Dropbox Community overall.
Forum Discussion
novotny
3 years agoExplorer | Level 4
backend Java process to read a shared folder
Hi,
We need a java workflow to scan the contents of a shared folder on a daily basis. I have downloaded the examples and looked at AuthorizeExample which I ran with the parameters "test.app tes...
Greg-DB
Dropbox Staff
novotny Regarding your initial authorization question, it is not possible to fully automate the OAuth process where the user chooses to authorize the app and the app then receives the resulting access token and optional refresh token. This needs to be done manually by the user at least once. If your app needs to maintain long-term access without the user manually re-authorizing it repeatedly, the app should request "offline" access so that it gets a refresh token. The refresh token doesn't expire and can be stored and used repeatedly to get new short-lived access tokens whenever needed, without the user manually reauthorizing the app.
The Java SDK can actually handle the refresh process for you automatically, as long as you supply the necessary credentials, e.g., as shown retrieved in this example (meant for server-side Java apps), or this example (meant for client-side Java apps), and then used as shown in this example. (For Android, see this example instead.)
And as Здравко noted, to access that "AffinityInvestment" folder, which is in your "team space", you should use withPathRoot, to set the "Dropbox-API-Path-Root" header as covered in the Team Files Guide. Note that you don't actually need any team scopes (be an admin) and use asMember to do that. Using listFolder/listFolderContinue, whether using withPathRoot or not, just requires the "files.metadata.read" scope.
novotny
3 years agoExplorer | Level 4
Thanks, I am getting a little farther.
Regarding authorization, let me describe what I am doing:
1. I executed the Authorize example you pointed me to with the parameters "test.app test.auth short_live_token" such that my test.app contains my appKey and secretKey. It then produces the following:
1. Go to https://www.dropbox.com/oauth2/authorize?token_access_type=offline&response_type=code&client_id=XYZ
2. Click "Allow" (you might have to log in first).
3. Copy the authorization code.
Enter the authorization code here:
After step 1, I get my code and enter it. It now displays:
Authorization complete.
- User ID:
- Account ID: null
- Access Token: <ACCESS_TOKEN>
- Expires At: 1664569280436
- Refresh Token: <REFRESH_TOKEN>
- Scope: account_info.read contacts.read file_requests.read files.metadata.read members.read sharing.read team_data.content.read team_data.content.write team_data.governance.read team_data.governance.write team_data.member team_data.team_space team_info.read
Saved authorization information to "/Users/novotny/IdeaProjects/dropbox-sdk-java/test.auth"
2. In my own code I hardcode the values I received from the example and create a credential object which allows me to create a client
DbxCredential dbxCredential = new DbxCredential(ACCESS_TOKEN, EXPIRES_AT, REFRESH_TOKEN, APP_KEY, APP_SECRET);
DbxTeamClientV2 teamClientV2 = new DbxTeamClientV2(config, dbxCredential);
But now what? I see there is a refreshAccessToken API available, is this something that my backend process should execute once per day?
try {
DbxRefreshResult result = client.refreshAccessToken();
System.err.println(result);
} catch (DbxException e) {
throw new RuntimeException(e);
}
Thanks, Jason
- Greg-DB3 years agoDropbox Staff
novotny You can call refreshAccessToken if you want, but that is actually not necessary. The client will automatically handle this procedure for you whenever needed. (That is, it will automatically perform the refresh to get and use a new short-lived access token when the current one is expired, without you having to call any other methods yourself.)
- novotny3 years agoExplorer | Level 4
Ok thanks, so the code I have should work fine? However what happens when the app restarts and the original hardcoded credentials have expired already? (Since the EXPIRES_AT has been hardcoded) Will that still work?
- Здравко3 years agoLegendary | Level 20
It's related to access token only! Refresh token doesn't expire. 😉
About Discuss Dropbox Developer & API
Make connections with other developers
797 PostsLatest Activity: 2 days agoIf you need more help you can view your support options (expected response time for an email or ticket is 24 hours), or contact us on X or Facebook.
For more info on available support options for your Dropbox plan, see this article.
If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!