이 SharedPrefernce에 토큰을 저장하고 적절하게 사용 자세한 내용은
private DropboxAPI <AndroidAuthSession> getDropboxAPI() {
AppKeyPair appKeys = new AppKeyPair(APP_KEY, APP_SECRET);
AndroidAuthSession session = new AndroidAuthSession(appKeys, ACCESS_TYPE);
mDBApi = new DropboxAPI<AndroidAuthSession>(session);
SharedPreferences sharedpreferences = getSharedPreferences("First_share_memory", Activity.MODE_APPEND);
String savedAccessToken = sharedpreferences.getString("accesstoken", "");// get previously saved accessToken
if (!TextUtils.isEmpty(savedAccessToken)) {
mDBApi.getSession().setOAuth2AccessToken(savedAccessToken);
}
return mDBApi;
}
이 심판을 참조하십시오. 다음은 동일한 샘플 코드입니다.
protected void onResume() {
AndroidAuthSession session = mApi.getSession();
setLoggedIn(mApi.getSession().authenticationSuccessful());
if (session.authenticationSuccessful()) {
try {
// Mandatory call to complete the auth
session.finishAuthentication();
// Store it locally in our app for later use
TokenPair tokens = session.getAccessTokenPair();
storeKeys(tokens.key, tokens.secret);
setLoggedIn(true);
} catch (IllegalStateException e) {
showToast(getString(R.string.could_not_authenticate_with_dropbox)
+ e.getLocalizedMessage());
}
}
super.onResume();
}
storeKeys을 추가하고 clearKeys가 된 SharedPreferences에
private void storeKeys(String key, String secret) {
// Save the access key for later
SharedPreferences prefs = getSharedPreferences(ACCOUNT_PREFS_NAME, 0);
Editor edit = prefs.edit();
edit.putString(ACCESS_KEY_NAME, key);
edit.putString(ACCESS_SECRET_NAME, secret);
edit.commit();
}
private void clearKeys() {
SharedPreferences prefs = getSharedPreferences(ACCOUNT_PREFS_NAME, 0);
Editor edit = prefs.edit();
edit.clear();
edit.commit();
}
private String[] getKeys() {
SharedPreferences prefs = getSharedPreferences(ACCOUNT_PREFS_NAME, 0);
String key = prefs.getString(ACCESS_KEY_NAME, null);
String secret = prefs.getString(ACCESS_SECRET_NAME, null);
if (key != null && secret != null) {
String[] ret = new String[2];
ret[0] = key;
ret[1] = secret;
return ret;
} else {
return null;
}
}
을 값을 저장하고 다음과 같은 세션을 초기화하는 기능 :
public AndroidAuthSession buildSession() {
AppKeyPair appKeyPair = new AppKeyPair(APP_KEY, APP_SECRET);
AndroidAuthSession session;
String[] stored = getKeys();
if (stored != null) {
AccessTokenPair accessToken = new AccessTokenPair(stored[0],
stored[1]);
session = new AndroidAuthSession(appKeyPair, ACCESS_TYPE,
accessToken);
} else {
session = new AndroidAuthSession(appKeyPair, ACCESS_TYPE);
}
return session;
}
편집 : 당신의 onResume 기능의 변화를 다음 만들기 추가 이 3 개의 정수와 setLoggedIn (true)의 호출을 코멘트 할 수 있습니다.
final static private String ACCOUNT_PREFS_NAME = "prefs";
final static private String ACCESS_KEY_NAME = "ACCESS_KEY";
final static private String ACCESS_SECRET_NAME = "ACCESS_SECRET";
정말 고마워요. 다음을 포함시켜야합니다. else { mDBApi.getSession(). startOAuth2Authentication (Control_Gate.this); }onResume 메서드 –
또 다른 질문은 pubnub를 통해 안드로이드 응용 프로그램에 메시지를 보내고 있습니다. 서비스에 코드를 작성했지만 Android OS가 서비스를 종료합니다. START_STICKY도 사용했지만 여러 번 서비스가 다시 시작되고 일부 알림도 누락됩니다. 그 유일한 512 메가 램. 내가 멈추지 않도록 모바일 용 코드를 넣을 수있는 또 다른 방법이 있습니까? –
새 질문을 만드십시오. SO 표준에 따라 모든 질문에 새로운 스레드가 있습니다. 세부 정보 U는 배경 및 전경 서비스에 대해 읽어야합니다. –