1

アプリケーションの再起動後に保存した認証トークンを使用する方法がわからないため、再度認証する必要はありません。

/*DROPBOX  ==========================*/
 private String APP_KEY= "key";
 private String APP_SECRET= "secret";

 AppKeyPair appKeys;
 AndroidAuthSession session;
 DropboxAPI<AndroidAuthSession> dpAPI;

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.readings_main);

   //get dropbox keys
    SharedPreferences sharedPref = getSharedPreferences(getString(R.string.dp_key_token), Context.MODE_PRIVATE);

      // if i use these 2 lines i get exception that my key isn´t set in manifest, and thats true because in manifest i have the first key, not hte generated after auth.
  //  APP_KEY= sharedPref.getString("key", "key");
  //  APP_SECRET= sharedPref.getString("secret", "secret");


appKeys = new AppKeyPair(APP_KEY, APP_SECRET);
    // setup dropbox session
    session = new AndroidAuthSession(appKeys, AccessType.DROPBOX);
    dpAPI= new DropboxAPI<AndroidAuthSession>(session);


}


 protected void onResume() {
    super.onResume();

     if (dpAPI.getSession().authenticationSuccessful()) {
            try {
                // Required to complete auth, sets the access token on the session
                dpAPI.getSession().finishAuthentication();
                AccessTokenPair tokens = dpAPI.getSession().getAccessTokenPair();
                //store keys in sharedpreferences       ;
                storeKeys(tokens.key, tokens.secret);

            } catch (IllegalStateException e) {
                Log.i("DbAuthLog", "Error authenticating", e);
            }
        }
}

public boolean storeKeys(String key, String secret) {

   SharedPreferences sharedPref = getSharedPreferences(getString(R.string.dp_key_token), Context.MODE_PRIVATE);
   SharedPreferences.Editor editor = sharedPref.edit();
   editor.putString("key", key);
   editor.putString("secret", secret);
   return editor.commit();

}

後で私は使用します...

dpAPI.getSession().startAuthentication(ADLAppActivity.this);

それからファイルをアップロードするので、すべてうまくいきます。しかし、アプリを再起動した後、再度認証したくありません。SharedPref に保存されたトークンをどのように使用すればよいですか???

4

1 に答える 1

1

この回答を確認してください。

呼び出す代わりに、設定からトークンを復元して呼び出すdpAPI.getSession().startAuthentication(ADLAppActivity.this);必要があります。session.setOAuth2AccessToken(RESTORED_TOKEN);

于 2014-02-19T00:03:00.773 に答える