We’re Still Here to Help (Even Over the Holidays!) - find out more here.
Forum Discussion
Andre_LB
8 years agoExplorer | Level 3
v2 API
Hi Dropbox Team, I am trying, using Dropbox API, to access my files in Dropbox. I have already done it with Dropbox API v1 and now I would like to do it with v2. For this reason, I performed as fo...
Andre_LB
8 years agoExplorer | Level 3
Hi Greg,
thanks again for your prompt reply.
I tried to remove the Sync error but I have not been able.
You are saying that this error is not referencing Dropbox (and for this reason it is difficult for you to help me).
But my feeling is that this error is releted the downloaded codes and settings.
For this reason I am not able to fix it.
So I abandoned this way.
---------------------------------------
Now I am straight using my app.
1) I updated my AndroidManifest.xml as you suggested.
Please, note that I do not have the "OpenWithActivity" activity section in it.
2) I call the authentication.
For this reason, in a class (className) I added (conditioned to a botton) the following call:-
Auth.startOAuth2Authentication(className.this, ACCESS_KEY_NAME);
ACCESS_KEY_NAME is, of course, my personal key.
3) For completing the flow, as you suggested, I added the onResume method for calling getOAuth2Token.
Please, note that I took the onResume method from DropboxActivity class
(not from UserActivity one).
4) Since I have got an error for "initAndLoadData" missing, I commented these two calls.
I run this app and the result is:-
Unfortunately, className has stopped
Well, I really hope that you could help me.
I do not hide you that I am losing any hope.
Thank you very much, in advance,
Andre
chirstius
Dropbox Staff
8 years agoHello Andre_LB,
I think it would be very helpful for you to post some actual code samples of your Activities/Classes at this point rather than just describing the process.
This would help replicate the issue or at least make it easier to potentially identify issues with the authorization flow.
Would you be able to provide your manifest.xml and any relevant classes - properly sanitized of keys/tokens/etc. - for review?
Thanks,
-Chuck
- Andre_LB8 years agoExplorer | Level 3
Hi Chuck,
thank you very much for your reply and suggestion.In the mean time, there have been a few progresses. With the attached code, I am able to start and complete the flow. Also, to store and re-use the resulting access token.
It seems to me have obtained an access token but I am not able to make a client.Indeed, when I add the "requestConfig" setting I have the following error:-
error: cannot access OkHttpClient
class file for okhttp3.OkHttpClient not found
I hope that this time to be easer for you to help me.
But I have another issue.
When I'll have made a client, it is still not clear how may I use it.
I mean, I would like to download/upload a file from/to a Dropbox folder of mine.
Well, how can I perform it?Thank you very much, in advance.
Kind Regards,
Andrepublic class PrvDef extends AppCompatActivity {
private static DbxClientV2 sDbxClient;
public Button auth_but;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_prv_def);
auth_but = (Button) findViewById(R.id.login_button);
auth_but.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Auth.startOAuth2Authentication(PrvDef.this, getString(R.string.app_key));
}
});
}
@Override
protected void onResume() {
super.onResume();
if (hasToken()) {
findViewById(R.id.login_button).setVisibility(View.GONE);
findViewById(R.id.email_text).setVisibility(View.VISIBLE);
findViewById(R.id.name_text).setVisibility(View.VISIBLE);
findViewById(R.id.type_text).setVisibility(View.VISIBLE);
findViewById(R.id.files_button).setEnabled(true);
findViewById(R.id.open_with).setEnabled(true);
} else {
findViewById(R.id.login_button).setVisibility(View.VISIBLE);
findViewById(R.id.email_text).setVisibility(View.GONE);
findViewById(R.id.name_text).setVisibility(View.GONE);
findViewById(R.id.type_text).setVisibility(View.GONE);
findViewById(R.id.files_button).setEnabled(false);
findViewById(R.id.open_with).setEnabled(false);
}
}
protected boolean hasToken() {
SharedPreferences prefs = getSharedPreferences("dropbox-sample", MODE_PRIVATE);
String accessToken = prefs.getString("access-token", null);
if (accessToken == null) {
accessToken = Auth.getOAuth2Token();
if (accessToken != null) {
prefs.edit().putString("access-token", accessToken).apply();
}
}
//-- requestConfig setting --------------------------------------------------------
DbxRequestConfig requestConfig = DbxRequestConfig.newBuilder("examples-v2-demo")
.withHttpRequestor(new OkHttp3Requestor(OkHttp3Requestor.defaultOkHttpClient()))
.build();
sDbxClient = new DbxClientV2(requestConfig, accessToken);
return accessToken != null;
}
}========================= Manifest =====================================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.rram.prvdef">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".PrvDef">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.dropbox.core.android.AuthActivity"
android:configChanges="orientation|keyboard"
android:launchMode="singleTask">
<intent-filter>
<!-- Change this to be db- followed by your app key -->
<data android:scheme="db-..my app key ..." />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>- chirstius8 years ago
Dropbox Staff
The issue regarding OkHttpClient not being found seems like it is a development environment issue, and not directly related to the Dropbox API. Are you getting errors from gradle or maven? Have you tried updating your project, or forcing a clean build? OkHttp is a dependency of the Dropbox SDK and should be included in your build environment when you include the Dropbox SDK. If you have checked out the SDK to build it yourself the dependency is still there and you'd likely see build errors occuring if it were not imported properly. As a test, you could try including the dependency directly (http://square.github.io/okhttp/#download) to see if it gets you past this error. But I'm not sure there is much direct help I can offer you in resolving this issue specifically since it is technically not an API issue.
As for how to upload/download a file via the Java SDK on Android there are examples available within the github respository:
Upload: https://github.com/dropbox/dropbox-sdk-java/blob/947f3f5aa9d5903a222d4b9e4ce7ce2c4defc2a4/examples/android/src/main/java/com/dropbox/core/examples/android/UploadFileTask.java#L61I hope that gets you a bit further along,
-Chuck
- Andre_LB8 years agoExplorer | Level 3
Hi Chuck,
thank you for your prompt reply.Lovely, I included the dependency directly, as you suggested, and the error that I had from gradle has disappeared!Now, if I run the app, I have got:-Unfortunately, PrvDef has stopped.The issue seems to be in client creating command (that is, "sDbxClient = new DbxClientV2(requestConfig, accessToken);" ).
Indeed, if I comment it this issue disappears.I did not change the code (that i previously sent to you).Let me know, please, if you need more information.Thank you very much, in advance.Kind Regards,Andre
About Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.
The Dropbox Community team is active from Monday to Friday. We try to respond to you as soon as we can, usually within 2 hours.
If 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, Facebook or Instagram.
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!