Интеграция Dropbox в android-приложение, но без всплывающего окна входа
Я хочу использовать dropbox в своем приложении.Я разработал образец приложения для загрузки и скачивания файлов, и он запрашивает аутентификацию.
но я не хочу открывать всплывающее окно входа.
можно ли получить доступ к dropbox другими пользователями, используя данные учетной записи по умолчанию(одна учетная запись)? Таким образом, любой пользователь может использовать dropbox напрямую без всплывающего окна входа.
4 ответов
Как установить пару токенов доступа пользователя доступа вручную.
AppKeyPair appKeys = new AppKeyPair(APP_KEY, APP_SECRET);
AndroidAuthSession session = new AndroidAuthSession(appKeys, ACCESS_TYPE);
if (mDBApi == null) {
mDBApi = new DropboxAPI<AndroidAuthSession>(session);
// mDBApi.getSession().startAuthentication(Main.this); //kicks off the web-based authentication
//you'll have to use the web-based authentication UI one-time to get the ######### values
String token_key="#########";
String token_seceret="#########";
AccessTokenPair tokens=new AccessTokenPair(token_key,token_seceret);
mDBApi.getSession().setAccessTokenPair(tokens);
// boolean v=mDBApi.getSession().authenticationSuccessful();
}
первый раз, когда я запускаю приложение в режиме отладки с точкой останова, я получаю ключ токена и секрет токена, введя действительный журнал подробно.и сохранил (отметил), что учетные данные и после этого я установил их вручную, как выше кода, то можно войти успешно.
Пожалуйста, загрузите проект из приведенного ниже имени ссылки как DBRoulette
и создать приложение в https://www.dropbox.com/developers и получить ключ api и секрет и добавить это как в DBRoulette.java и AndroidManifest.в XML ...это работает..
в onCreate() написать
AppKeyPair pair = new AppKeyPair(ACCESS_KEY, ACCESS_SECRET);
session = new AndroidAuthSession(pair, AccessType.APP_FOLDER);
dropbox = new DropboxAPI<AndroidAuthSession>(session);
SharedPreferences prefs = getSharedPreferences(DROPBOX_NAME, 0);
String key = prefs.getString(ACCESS_KEY, null);
String secret = prefs.getString(ACCESS_SECRET, null);
if (key != null && secret != null) {
Log.d("key secret", key + " " + secret);
AccessTokenPair token = new AccessTokenPair(key, secret);
dropbox.getSession().setAccessTokenPair(token);
}
if (key == null && secret == null)
dropbox.getSession().startAuthentication(DropboxActivity.this);
и в onResume() написать
if (dropbox.getSession().isLinked()) {
try {
loggedIn(true);
doAction();
} catch (IllegalStateException e) {
Toast.makeText(this, "Error during Dropbox authentication",
Toast.LENGTH_SHORT).show();
}
} else if (dropbox.getSession().authenticationSuccessful()) {
try {
session.finishAuthentication();
TokenPair tokens = session.getAccessTokenPair();
SharedPreferences prefs = getSharedPreferences(DROPBOX_NAME, 0);
Editor editor = prefs.edit();
editor.putString(ACCESS_KEY, tokens.key);
editor.putString(ACCESS_SECRET, tokens.secret);
editor.commit();
loggedIn(true);
doAction();
} catch (IllegalStateException e) {
Toast.makeText(this, "Error during Dropbox authentication",
Toast.LENGTH_SHORT).show();
}
}
это сработало отлично для меня