2013-09-16 2 views
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에서 저장된 토큰을 어떻게 사용해야합니까 ???

답변

1

this answer을 확인하십시오.

dpAPI.getSession().startAuthentication(ADLAppActivity.this);을 호출하는 대신 session.setOAuth2AccessToken(RESTORED_TOKEN);을 호출하여 토큰을 환경 설정에서 복원해야합니다.

+0

나는이 답변을 찾기에는 너무 오랫동안 파고 들었다. 고마워요, 선생님! – Sipty

관련 문제