Need to see if your shared folder is taking up space on your dropbox 👨💻? Find out how to check here.
Forum Discussion
alca
9 years agoExplorer | Level 3
Android authentication
In the previous api login could be performed to the device dropbox account by using the api key and the api secret, is there any way to do this with V2? What a I need is to be able to connect to diferent dropbox accounts in V2?
12 Replies
- alca9 years agoExplorer | Level 3
There was a mistake with the post dont know ho to edit so I follow after "accounts in" before V2.
diferent devices, if this is not possible any more, what would be the best way to implement it on V2?
- Greg-DB9 years ago
Dropbox Community Moderator
The app key and secret themselves are not enough to connect to a Dropbox account, in either API v1 or API v2.
To connect to a Dropbox account via the API, you need an "access token". You can get an access token for the user by sending the user through the OAuth app authorization flow. You can find an example implementation of doing this on Android with the API v2 Java SDK here:
https://github.com/dropbox/dropbox-sdk-java/tree/master/examples/android
Specifically, the process is initiated here:
And completed here:
One difference between API v1 and API v2 is that API v2 uses OAuth 2 exclusively, where the app secret is not necessary for client-side apps, such as on Android. Only the app key is needed to start the OAuth app authorization flow and get an access token for the current user.
- alca9 years agoExplorer | Level 3
Im not sure if I´m doing this OK, but this is what I do and application crushes:
Auth.startOAuth2Authentication(this, this.RASVIET_APP_KEY_V2);
String accessToken = Auth.getOAuth2Token();this is an activitie that
extends PreferenceActivityand rasviet_app_key_v2 is my key for the app
- Greg-DB9 years ago
Dropbox Community Moderator
Are you calling startOAuth2Authentication and getOAuth2Token together like that? You should use just startOAuth2Authentication to initiate the app authorization flow. You should then later call getOAuth2Token to complete the app authorization flow in onResume. (Please refer to the samples linked in my previous post.)
Otherwise, please share the full error/output you're getting. - alca9 years agoExplorer | Level 3
I am using 3.0.3 dropbox core sdk and it doesnt find v7 in android.support.v7.app.AppCompatActivity
- Greg-DB9 years ago
Dropbox Community Moderator
Can you share the steps and code to reproduce the issue? Thanks in advance! - alca9 years agoExplorer | Level 3
In build.grade file I add this:
dependencies {
compile files('libs/dropbox-core-sdk-3.0.3.jar')
}and add the jar with that name under the libs folder, then I create a new class just as the example with this code:
package com.rasviet.mobility.sincro;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import com.dropbox.core.android.Auth;
/**
* Created by Jritxal on 01/08/2017.
*/
public class DropboxActivity extends AppCompatActivity {
}and it says it cannont resolve v7 that apears in red and so does AppCompatActivity ofc.
- Greg-DB9 years ago
Dropbox Community Moderator
It sounds like you're having trouble importing the Android support library, as opposed to Dropbox itself. I can't offer much help with that, but there's a post about it here:
https://stackoverflow.com/questions/30803405/cannot-resolve-symbol-appcompatactivity-support-v7-libraries-arent-recognized
By the way, it looks like you're loading the Dropbox library from the jar file, but since you're using gradle anyway, we recommend just using the setup as documented here:
https://github.com/dropbox/dropbox-sdk-java#setup - jritxalç9 years agoExplorer | Level 3
Hello, finally I made it work!!
My prob now is that I suppose I need the
DbxClientV2 client;
variable to keep making calls to the api, I have declared it as public static on my main class (SyncActivity) and do this on the DropboxConnection class:
protected void loadData() {
new GetCurrentAccountTask(DropboxClientFactory.getClient(), new GetCurrentAccountTask.Callback() {
@Override
public void onComplete(FullAccount result) {
SyncActivity.client = DropboxClientFactory.getClient();
finish();
}
@Override
public void onError(Exception e) {
Toast.makeText(getApplicationContext(), "Failed to get account details.",
Toast.LENGTH_LONG).show();
}
}).execute();
}but I´m trying to use it on the onResume method of SyncActivity class to just get email addres of the user like this:
try {
if (client != null) {
FullAccount account = client.users().getCurrentAccount();
Toast.makeText(SyncActivity.this, "cliente: " + account.getEmail()+ " acc: "+account.toString(),
Toast.LENGTH_LONG).show();
}
}
catch(Exception e)
{
Toast.makeText(SyncActivity.this, "Excepcion: "+e.getMessage(),
Toast.LENGTH_LONG).show();
}and Im getting an exception with message: "null"
- Greg-DB9 years ago
Dropbox Community Moderator
Can you share the full exception/stack trace?
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!