cancel
Showing results for 
Search instead for 
Did you mean: 
Announcements
In need of some #MondayMotivation? Read more

Authorization requires web browser even for dev?

63 Views
2 Comments
0 Kudos
Highlighted
Level 3

Authorization requires web browser even for dev?

This is painful... 

The Java examples rely on an auth file created via the Authorization example.  Which in turn requires building this code, and running a web browser...

 

String authorizeUrl = webAuth.authorize(webAuthRequest);
System.out.println("1. Go to " + authorizeUrl);
System.out.println("2. Click \"Allow\" (you might have to log in first).");
System.out.println("3. Copy the authorization code.");
System.out.print("Enter the authorization code here: ");

 

Now, I can get an auth code for me from DropBox directly, but the DbxAuthInfo structure also requires a non-NULL host.  And has no documentation about that.  This example doesn't have it either; the user and secret are submitted and the auth code retrieved.

 

From https://www.dropbox.com/developers/apps/info/..., how do I get the host?  

 

2 Replies
Dropboxer

Re: Authorization requires web browser even for dev?

Apologies for the confusion. The DbxHost should identify the Dropbox API servers, but you generally don't need to actually use any of that. You can default to the standard hosts.

 

For example, you can just use this constructor to make a DbxAppInfo without specifying host.

 

And outside of the structure of the examples, you really only need the access token, e.g., as acquired here. You can store and re-use that for future calls.

 

You can use that to make a DbxClientV2 without specifying host using this constructor.

 

(For reference though, the default DbxHost is DbxHost.DEFAULT.)

Level 3

Re: Authorization requires web browser even for dev?

Well that was challenging.   That worked but it took a while to realize it. Even though I'd removed the old Dropbox and Jackson (?) JARs from my libraries list, the Jackson one was still in the /lib folder and therefore was apparently being found before the newer Jackson-core (which was also there), resulting in java.lang.NoSuchFieldError: DEFAULT  java.lang.reflect.InvocationTargetException and so on.