Интегрируйте Dropbox в Android-приложение, но без входа в систему
Я хочу использовать dropbox в своем приложении. Я разработал пример приложения для загрузки и загрузки файлов и попросил аутентификацию.
Но я не хочу открывать всплывающее окно входа.
Возможно ли доступ к Dropbox другим пользователям, использующим данные учетной записи по умолчанию (одна учетная запись)?
Таким образом, любой пользователь может использовать dropbox непосредственно без входа в систему.
Ответы
Ответ 1
Как установить пар ключ доступа пользователя к пользователю вручную.
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();
}
В первый раз, когда я запускаю приложение в режиме отладки с точкой останова, я получаю ключ маркера и токена, введя действительный журнал в detail.and сохранил (отметил), что учетные данные и после этого я установил их вручную, как указано выше, тогда может быть войдите в систему успешно.
Ответ 2
Да. Посмотрите их пример DBRoulette приложения.
Ответ 3
Загрузите проект с указанного ниже имени ссылки DBRoulette
https://www.dropbox.com/developers/core
И создайте приложение в https://www.dropbox.com/developers и получите ключ api и секрет и добавьте это как в DBRoulette.java и в AndroidManifest.xml... он работает..
Ответ 4
В 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();
}
}
Это сработало отлично для меня