修复refreshToken过期重试问题

This commit is contained in:
kehaoyuan
2017-11-09 11:47:13 +08:00
parent 1d544ff558
commit ec2d14bffe
4 changed files with 50 additions and 19 deletions

View File

@ -3,6 +3,7 @@ package com.gh.common.util;
import android.app.Dialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Looper;
import android.preference.PreferenceManager;
import android.text.TextUtils;
@ -35,6 +36,7 @@ import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.HttpException;
import rx.Observable;
import rx.Scheduler;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
@ -200,7 +202,7 @@ public class LoginUtils {
syncUserData(context, syncDeviceID, listener, loginTag);
sp.edit().putString("syncDeviceID", null).apply(); // 清空
} else {
getUserData(context, listener, loginTag);
getUserData(context, false, listener, loginTag);
}
}
@ -297,15 +299,15 @@ public class LoginUtils {
if (loginToken != null && loginToken.getAccessToken() != null) {
LoginResponseEntity.AccessToken accessToken = loginToken.getAccessToken();
Long accessExpire = accessToken.getExpire();
if (accessExpire != null && accessExpire > Utils.getTime(context)) {
getUserData(context, listener, null);
if (false && accessExpire != null && accessExpire > Utils.getTime(context)) {
getUserData(context, false, listener, null);
} else {
LoginResponseEntity.RefreshToken refreshToken = loginToken.getRefreshToken();
Long refreshExpire = refreshToken.getExpire();
if (refreshExpire != null && refreshExpire > Utils.getTime(context)) {
Map<String, String> params = new HashMap<>();
params.put("refresh_token", refreshToken.getValue());
RefreshTokenManager.getInstance().refreshToken(context, new JSONObject(params), listener);
RefreshTokenManager.getInstance().refreshToken(context, false, new JSONObject(params), listener);
} else {
// 重新登录
cleanUserData(context);
@ -332,6 +334,12 @@ public class LoginUtils {
}
}
@Override
public void onError(Throwable e) {
super.onError(e);
Utils.log("=====eeee::" + e.toString());
}
@Override
public void onFailure(HttpException e) {
super.onFailure(e);
@ -349,14 +357,21 @@ public class LoginUtils {
}
// 获取用户信息
public static void getUserData(final Context context, final onLoginCallBackListener listener, final LoginTag loginTag) {
public static void getUserData(final Context context, boolean isRunMainThread, final onLoginCallBackListener listener, final LoginTag loginTag) {
RetrofitManager.getInstance(context)
.getApi()
.getUserInfo()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(userInfoResponse(context, loginTag, listener));
Observable<UserInfoEntity> observable;
if (isRunMainThread) {
observable = RetrofitManager.getInstance(context)
.getApi()
.getUserInfo();
} else {
observable = RetrofitManager.getInstance(context)
.getApi()
.getUserInfo()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
observable.subscribe(userInfoResponse(context, loginTag, listener));
}
// 获取本地缓存用户信息