はSharedPrefernceにトークンを保存し、それに応じてそれを使用しています。以下は同じもののサンプルコードです。
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";
出典
2017-03-16 13:16:31
nnn
ありがとうございました。ちょうど以下を含める必要がありました: else { mDBApi.getSession()。startOAuth2Authentication(Control_Gate.this); } onResumeメソッドの –
別の質問私はアンドロイドアプリケーションにメッセージを送信するためにpubnubを通過しています。私はコードをサービスに書いたが、今はAndroid OSがサービスを殺している。私もSTART_STICKYを使用していますが、サービスを何度か再起動してしまい、何らかの通知もありません。その唯一の512MBのラム。携帯電話がハングしないようにコードを置くことができる別の方法はありますか? –
新しい質問を作成してください。すべての質問には新しいスレッドがありますので、SO標準に従ってください。詳細については、バックグラウンドとフォアグラウンドサービスについて読む必要があります。 –