2013-03-26 4 views
11

Я хочу использовать dropbox в своем приложении. Я разработал пример приложения для загрузки и скачивания файлов и попросил аутентификацию.Интеграция Dropbox в Android-приложение, но без входа в систему

Но я не хочу открывать всплывающее окно.

Возможно ли доступ к Dropbox другими пользователями, использующими учетные данные по умолчанию (одна учетная запись)? Таким образом, любой пользователь может использовать Dropbox непосредственно без входа в систему.

+0

Можете ли вы предоставить больше информации о том, что вы пытаетесь сделать? Почему только одна учетная запись Dropbox? Я сомневаюсь, что DB позволит вам это сделать. – dbDev

+0

более или менее обманут: http://stackoverflow.com/questions/15014001/allow-dropbox-api-to-access-my-account-on-users-device/15030046 – Greg

+0

Я хочу использовать dropbox как сервер, так что любой пользователь может загружать и загружать файлы в одну учетную запись, не взаимодействуя с входом в Dropbox. Спасибо всем за ответы. – jagdishkumawat

ответ

7

Как установить пару парных ключей доступа пользователя вручную.

 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 сохраненную (отмечено), что учетные данные, и после этого я установить их вручную, как описано выше код может быть успешно зарегистрирован.

+0

Как вы получите token_key и token_secret вручную, не запустив экран проверки подлинности Dropbox? – karn

+1

Вы * должны будете запустить экран проверки подлинности, но * только один раз *. Затем выключите его и установите пару ключей маркера вручную, как показано выше. – PeteH

+1

Но можно ли жестко указывать учетные данные в источнике, поэтому экран проверки не отображается даже один раз. Если я хочу показать демо 100 пользователям, им нужно будет ввести user/pass для этой демонстрации, и я хочу этого избежать. : S – Ewoks

2

Да. Взгляните на пример приложения DBRoulette.

+2

Я решил эту проблему, установив пару токенов доступа пользователя вручную. а также отлично работает для другого пользователя без входа в систему. – jagdishkumawat

+0

Вы бы более поняли это. Я поражен этим вопросом. – user1106888

0

В 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(); 
      } 

     } 

Он работал отлично для меня

Смежные вопросы