diff --git a/app/src/main/java/com/gh/common/constant/Constants.java b/app/src/main/java/com/gh/common/constant/Constants.java index c342308e4e..b4711af062 100644 --- a/app/src/main/java/com/gh/common/constant/Constants.java +++ b/app/src/main/java/com/gh/common/constant/Constants.java @@ -10,6 +10,8 @@ public class Constants { public final static int NOT_NETWORK_CODE = 504; // 没有网络的状态码(应该是这个吧!) + public static final String LOGIN_TOKEN_ID = "userToken_id"; // 用户ID 与服务器无关 + //手机号码匹配规则 public static final String REGEX_MOBILE = "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$"; public static final String REGEX_ACCOUNT = "^[a-zA-Z_]\\w{5,17}$"; diff --git a/app/src/main/java/com/gh/common/util/GetLoginDataUtils.java b/app/src/main/java/com/gh/common/util/GetLoginDataUtils.java index 3de87ecb5c..fd8cc484dc 100644 --- a/app/src/main/java/com/gh/common/util/GetLoginDataUtils.java +++ b/app/src/main/java/com/gh/common/util/GetLoginDataUtils.java @@ -6,6 +6,7 @@ import android.content.Intent; import android.widget.Toast; import com.gh.common.constant.Config; +import com.gh.gamecenter.login.LoginTag; import com.lightgame.utils.RuntimeUtils; import com.lightgame.utils.Utils; import com.sina.weibo.sdk.WbSdk; @@ -89,7 +90,7 @@ public class GetLoginDataUtils { content.put("access_token_expire", Utils.getTime(mContext) + jsonObject.getLong("expires_in")); content.put("access_token", jsonObject.getString("access_token")); if (mLoginListener != null) { - mLoginListener.OnLoginData(content, LoginUtils.LoginTag.qq);// QQ 登录回调 + mLoginListener.OnLoginData(content, LoginTag.qq);// QQ 登录回调 } } catch (JSONException e) { @@ -171,7 +172,7 @@ public class GetLoginDataUtils { } public void WCLofinCallBack(JSONObject content) { - mLoginListener.OnLoginData(content, LoginUtils.LoginTag.wechat); + mLoginListener.OnLoginData(content, LoginTag.wechat); } public void onWeiboCallback(int requestCode, int resultCode, Intent data) { @@ -219,7 +220,7 @@ public class GetLoginDataUtils { content.put("refresh_token", token.getRefreshToken()); // content.put("refresh_token_expire", Utils.getTime(mContext) + 86400 * 30); // refresh_token 有效期30天 if (mLoginListener != null) { - mLoginListener.OnLoginData(content, LoginUtils.LoginTag.weibo);// 微博 登录回调 + mLoginListener.OnLoginData(content, LoginTag.weibo);// 微博 登录回调 } } catch (JSONException e) { e.printStackTrace(); @@ -293,7 +294,7 @@ public class GetLoginDataUtils { // 登录成功回调 public interface OnLoginDataListener { - void OnLoginData(JSONObject content, LoginUtils.LoginTag loginTag); + void OnLoginData(JSONObject content, LoginTag loginTag); } } diff --git a/app/src/main/java/com/gh/common/util/LoginUtils.java b/app/src/main/java/com/gh/common/util/LoginUtils.java index 6930bbfcd7..c9f5006bf0 100644 --- a/app/src/main/java/com/gh/common/util/LoginUtils.java +++ b/app/src/main/java/com/gh/common/util/LoginUtils.java @@ -1,18 +1,12 @@ package com.gh.common.util; import android.content.Context; -import android.content.SharedPreferences; -import android.preference.PreferenceManager; -import com.gh.gamecenter.entity.UserInfoEntity; -import com.gh.gamecenter.eventbus.EBReuse; -import com.gh.gamecenter.personal.PersonalFragment; import com.gh.gamecenter.retrofit.JSONObjectResponse; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; import com.lightgame.utils.Utils; -import org.greenrobot.eventbus.EventBus; import org.json.JSONException; import org.json.JSONObject; @@ -30,10 +24,6 @@ import rx.schedulers.Schedulers; // TODO: 1/12/17 逐步整理 删除 public class LoginUtils { - public enum LoginTag { - qq, wechat, weibo, phone, refresh, oldUserPhone - } - // public static void checkPhoneNum(final Context context, final String phoneName, final onCaptchaCallBackListener listener) { // 老用户登录检查手机是否登录过 // RetrofitManager.getInstance(context).getApi() // .checkPhoneNum(phoneName) @@ -152,19 +142,6 @@ public class LoginUtils { }); } - // 清除本地用户相关信息 - public static void cleanUserData(Context context) { - SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); - SharedPreferences.Editor edit = sp.edit(); - edit.putString("user_info", null); - edit.putString("login_token", null); - edit.apply(); - - GetLoginDataUtils.getInstance(context).QQLogout(); - - EventBus.getDefault().post(new EBReuse(PersonalFragment.LOGOUT_TAG)); - } - public static void outputErrorHint(Context context, int code) { switch (code) { @@ -311,10 +288,4 @@ public class LoginUtils { void onCaptcha(String serviceId); } - // 登录回调 - public interface onLoginCallBackListener { - void onLogin(UserInfoEntity entity, LoginTag loginTag); - - void onLoginFailure(); - } } diff --git a/app/src/main/java/com/gh/gamecenter/SettingActivity.java b/app/src/main/java/com/gh/gamecenter/SettingActivity.java index dbec3a5670..87606c27a7 100644 --- a/app/src/main/java/com/gh/gamecenter/SettingActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SettingActivity.java @@ -1,6 +1,7 @@ package com.gh.gamecenter; import android.app.Dialog; +import android.arch.lifecycle.ViewModelProviders; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -28,6 +29,7 @@ import com.gh.common.util.StringUtils; import com.gh.gamecenter.entity.LoginTokenEntity; import com.gh.gamecenter.eventbus.EBReuse; import com.gh.gamecenter.eventbus.EBSkip; +import com.gh.gamecenter.login.UserViewModel; import com.gh.gamecenter.manager.UserManager; import com.kyleduo.switchbutton.SwitchButton; import com.lightgame.download.FileUtils; @@ -77,6 +79,8 @@ public class SettingActivity extends BaseActivity implements OnClickListener { private Dialog loadingDialog = null; + private UserViewModel mUserViewModel; + private int checkSizeIndex; @NonNull @@ -107,6 +111,9 @@ public class SettingActivity extends BaseActivity implements OnClickListener { sp = PreferenceManager.getDefaultSharedPreferences(this); + final UserViewModel.Factory factory = new UserViewModel.Factory(getApplication()); + mUserViewModel = ViewModelProviders.of(this, factory).get(UserViewModel.class); + // 未打开下载按钮,显示修复下载按钮 if (!sp.getBoolean("isShow", true)) { findViewById(R.id.setting_cv_fix_download).setVisibility(View.VISIBLE); @@ -278,7 +285,7 @@ public class SettingActivity extends BaseActivity implements OnClickListener { LoginUtils.logout(SettingActivity.this, new LoginUtils.OnLogoutListener() { @Override public void onCompleted() { - LoginUtils.cleanUserData(SettingActivity.this); + mUserViewModel.logout(); if (loadingDialog != null) loadingDialog.dismiss(); finish(); } diff --git a/app/src/main/java/com/gh/gamecenter/fragment/LoginFragment.java b/app/src/main/java/com/gh/gamecenter/fragment/LoginFragment.java index 692b97a085..ef089a7062 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/LoginFragment.java +++ b/app/src/main/java/com/gh/gamecenter/fragment/LoginFragment.java @@ -23,10 +23,13 @@ import com.gh.common.util.LoginUtils; import com.gh.common.util.PatternUtils; import com.gh.gamecenter.R; import com.gh.gamecenter.entity.UserInfoEntity; +import com.gh.gamecenter.eventbus.EBReuse; import com.gh.gamecenter.login.ApiResponse; import com.gh.gamecenter.login.LoginTag; import com.gh.gamecenter.login.UserViewModel; +import com.gh.gamecenter.personal.PersonalFragment; +import org.greenrobot.eventbus.EventBus; import org.json.JSONObject; import java.util.HashMap; @@ -178,8 +181,8 @@ public class LoginFragment extends BaseFragment implements LoginUtils.onCaptchaC } @Override - public void OnLoginData(JSONObject content, LoginUtils.LoginTag loginTag) { - login(content, LoginTag.valueOf(loginTag.name())); + public void OnLoginData(JSONObject content, LoginTag loginTag) { + login(content, loginTag); } @Override @@ -189,6 +192,7 @@ public class LoginFragment extends BaseFragment implements LoginUtils.onCaptchaC } if (response != null && response.getData() != null && mLoginDialog != null) { + EventBus.getDefault().post(new EBReuse(PersonalFragment.LOGIN_TAG)); getActivity().finish(); } } diff --git a/app/src/main/java/com/gh/gamecenter/login/AppDatabase.java b/app/src/main/java/com/gh/gamecenter/login/AppDatabase.java index ad05757ceb..e0264fe345 100644 --- a/app/src/main/java/com/gh/gamecenter/login/AppDatabase.java +++ b/app/src/main/java/com/gh/gamecenter/login/AppDatabase.java @@ -14,7 +14,7 @@ import com.gh.gamecenter.entity.UserInfoEntity; @Database(entities = {LoginTokenEntity.class, UserInfoEntity.class}, version = 1, exportSchema = false) public abstract class AppDatabase extends RoomDatabase { - public abstract UserInfoDao userinfoDao(); + public abstract UserInfoDao userInfoDao(); public abstract LoginTokenDao loginTokenDao(); diff --git a/app/src/main/java/com/gh/gamecenter/login/UserRepository.java b/app/src/main/java/com/gh/gamecenter/login/UserRepository.java index b84a7eba81..cec4a59a14 100644 --- a/app/src/main/java/com/gh/gamecenter/login/UserRepository.java +++ b/app/src/main/java/com/gh/gamecenter/login/UserRepository.java @@ -48,8 +48,6 @@ import rx.schedulers.Schedulers; class UserRepository { - public static final String LOGIN_TOKEN_ID = "userToken_id"; - private static UserRepository mInstance; private Context mContext; @@ -85,7 +83,7 @@ class UserRepository { mUserseaService = RetrofitManager.getInstance(context).getUsersea(); mApiService = RetrofitManager.getInstance(context).getApi(); mAppDatabase = database; - mCachedId = PreferenceManager.getDefaultSharedPreferences(context).getString(LOGIN_TOKEN_ID, null); + mCachedId = PreferenceManager.getDefaultSharedPreferences(context).getString(Constants.LOGIN_TOKEN_ID, null); checkLogin(); } @@ -123,19 +121,19 @@ class UserRepository { } if (mCacheUserInfoEntity != null) { - mAppDatabase.userinfoDao().deleteUserInfo(mCacheUserInfoEntity); + mAppDatabase.userInfoDao().deleteUserInfo(mCacheUserInfoEntity); mCacheUserInfoEntity = null; } mCachedId = null; - PreferenceManager.getDefaultSharedPreferences(mContext).edit().putString(LOGIN_TOKEN_ID, null).apply(); + PreferenceManager.getDefaultSharedPreferences(mContext).edit().putString(Constants.LOGIN_TOKEN_ID, null).apply(); } public LiveData> getLoginUserInfo() { if (mCacheUserInfoEntity != null) { mLoginObsResponseUserInfo.postValue(new ApiResponse<>(mCacheUserInfoEntity)); } else { - final LiveData liveUserInfo = mAppDatabase.userinfoDao().getLiveUserInfoById(mCachedId); + final LiveData liveUserInfo = mAppDatabase.userInfoDao().getLiveUserInfoById(mCachedId); mLoginObsResponseUserInfo.addSource(liveUserInfo, new Observer() { @Override public void onChanged(@Nullable UserInfoEntity userInfoEntity) { @@ -276,9 +274,10 @@ class UserRepository { EventBus.getDefault().post(new EBShowDialog("loginException", string)); // 打开提示框 } - if (code == 40802 /* TODO 还有一个refreshToken无效返回的一次(token timeout) */) { // 自动注销 + if (code == 40802 || code == 40401) { // 自动注销 logout(); } else { + // todo 其实这里不用管 ApiResponse value = new ApiResponse<>(); value.setThrowable(value.getThrowable()); value.setHttpException(httpException); @@ -421,8 +420,8 @@ class UserRepository { HaloApp.SINGLE_EXECUTOR.execute(new Runnable() { @Override public void run() { - if (mAppDatabase.userinfoDao().updateUserInfo(userInfo) <= 0) { - mAppDatabase.userinfoDao().addUserInfo(userInfo); + if (mAppDatabase.userInfoDao().updateUserInfo(userInfo) <= 0) { + mAppDatabase.userInfoDao().addUserInfo(userInfo); } } }); @@ -439,7 +438,7 @@ class UserRepository { mAppDatabase.loginTokenDao().addToken(tokenEntity); } - PreferenceManager.getDefaultSharedPreferences(mContext).edit().putString(LOGIN_TOKEN_ID, mCachedId).apply(); + PreferenceManager.getDefaultSharedPreferences(mContext).edit().putString(Constants.LOGIN_TOKEN_ID, mCachedId).apply(); } }); @@ -457,17 +456,19 @@ class UserRepository { } private void cacheAndNotifyUserInfo(UserInfoEntity userInfoEntity, boolean isEditUserInfo) { + setUserManagerData(null, userInfoEntity); + mCacheUserInfoEntity = userInfoEntity; mLoginObsResponseUserInfo.postValue(new ApiResponse<>(userInfoEntity)); - setUserManagerData(null, userInfoEntity); if (isEditUserInfo) mEditObsResponseUserInfo.postValue(new ApiResponse<>(userInfoEntity)); } private void cacheAndNotifyLoginToken(LoginTokenEntity loginTokenEntity) { + setUserManagerData(loginTokenEntity, null); + mCacheLoginTokenEntity = loginTokenEntity; mObservableLoginToken.postValue(loginTokenEntity); - setUserManagerData(loginTokenEntity, null); } diff --git a/app/src/main/java/com/gh/gamecenter/login/UserViewModel.java b/app/src/main/java/com/gh/gamecenter/login/UserViewModel.java index 67b4fa5716..95cbb5363c 100644 --- a/app/src/main/java/com/gh/gamecenter/login/UserViewModel.java +++ b/app/src/main/java/com/gh/gamecenter/login/UserViewModel.java @@ -9,6 +9,7 @@ import android.preference.PreferenceManager; import android.support.annotation.NonNull; import android.text.TextUtils; +import com.gh.common.constant.Constants; import com.gh.gamecenter.entity.UserInfoEntity; import com.gh.gamecenter.manager.UserManager; @@ -30,7 +31,7 @@ public class UserViewModel extends AndroidViewModel { public UserViewModel(@NonNull Application application, UserRepository repository) { super(application); - mCurrentUserId = PreferenceManager.getDefaultSharedPreferences(application).getString(UserRepository.LOGIN_TOKEN_ID, null); + mCurrentUserId = PreferenceManager.getDefaultSharedPreferences(application).getString(Constants.LOGIN_TOKEN_ID, null); mUserRepository = repository; mLoginLiveUserInfo = repository.getLoginUserInfo(); mEditLiveUserInfo = repository.getEditObsUserInfo(); diff --git a/app/src/main/java/com/gh/gamecenter/manager/RefreshTokenManager.java b/app/src/main/java/com/gh/gamecenter/manager/RefreshTokenManager.java index 4abbb3e115..a29200a941 100644 --- a/app/src/main/java/com/gh/gamecenter/manager/RefreshTokenManager.java +++ b/app/src/main/java/com/gh/gamecenter/manager/RefreshTokenManager.java @@ -1,11 +1,32 @@ package com.gh.gamecenter.manager; import android.content.Context; +import android.preference.PreferenceManager; -import com.gh.common.util.LoginUtils; +import com.gh.common.constant.Constants; +import com.gh.common.util.DeviceUtils; +import com.gh.gamecenter.R; +import com.gh.gamecenter.entity.LoginTokenEntity; +import com.gh.gamecenter.entity.UserInfoEntity; +import com.gh.gamecenter.eventbus.EBReuse; +import com.gh.gamecenter.eventbus.EBShowDialog; +import com.gh.gamecenter.login.AppDatabase; +import com.gh.gamecenter.personal.PersonalFragment; +import com.gh.gamecenter.retrofit.Response; +import com.gh.gamecenter.retrofit.RetrofitManager; +import com.gh.gamecenter.retrofit.service.ApiService; +import com.gh.gamecenter.retrofit.service.UserseaService; +import com.halo.assistant.HaloApp; +import com.lightgame.utils.Utils; +import org.greenrobot.eventbus.EventBus; +import org.json.JSONException; import org.json.JSONObject; +import okhttp3.MediaType; +import okhttp3.RequestBody; +import retrofit2.HttpException; + /** * Created by khy on 8/11/17. */ @@ -14,13 +35,27 @@ public class RefreshTokenManager { private static RefreshTokenManager mInstance; + private AppDatabase mDatabase; + private UserseaService mUserseaService; + private ApiService mApiService; + + private Context mContext; + private boolean isRefreshing = false; - public static RefreshTokenManager getInstance() { + + public RefreshTokenManager(Context context) { + mContext = context; + mDatabase = AppDatabase.getInstance(context); + mUserseaService = RetrofitManager.getInstance(context).getUsersea(); + mApiService = RetrofitManager.getInstance(context).getApi(); + } + + public static RefreshTokenManager getInstance(Context context) { if (mInstance == null) { synchronized (RefreshTokenManager.class) { if (mInstance == null) { - mInstance = new RefreshTokenManager(); + mInstance = new RefreshTokenManager(context); } } } @@ -28,81 +63,131 @@ public class RefreshTokenManager { } /** - * - * @param context - * @param isRunMainThread 是否同步执行 - * @param content - * @param listener - * - * todo 暂时搁置 + * @param token + * @param callBack */ - public void refreshToken(final Context context, final boolean isRunMainThread, JSONObject content, final LoginUtils.onLoginCallBackListener listener) { -// if (isRefreshing) { -// listener.onLoginFailure(); -// return; -// } -// -// isRefreshing = true; -// RequestBody body = null; -// try { -// JSONObject device = DeviceUtils.getLoginDevice(context.getApplicationContext()); -// content.put("device", device); -// body = RequestBody.create(MediaType.parse("application/json"), content.toString()); -// } catch (JSONException e) { -// e.printStackTrace(); -// } -// -// Observable observable; -// if (isRunMainThread) { -// observable = RetrofitManager.getInstance(context).getUsersea().refreshToken(body); -// } else { -// observable = RetrofitManager.getInstance(context).getUsersea().refreshToken(body) -// .subscribeOn(Schedulers.io()) -// .observeOn(AndroidSchedulers.mainThread()); -// } -// observable -// .subscribe(new Response() { -// @Override -// public void onResponse(LoginTokenEntity response) { -// super.onResponse(response); -// LoginResponseEntity loginToken = LoginUtils.getLoginToken(context); -// if (loginToken != null) { -// response.setLoginType(loginToken.getLoginType()); -// response.setId(loginToken.getUserToken()); -// } -// LoginUtils.saveLoginToken(context, response); -// -// LoginUtils.getUserData(context, isRunMainThread, listener, LoginUtils.LoginTag.refresh); -// -// isRefreshing = false; -// } -// -// @Override -// public void onFailure(HttpException e) { -// super.onFailure(e); -// if (listener != null) { -// listener.onLoginFailure(); -// } -// -// if (e != null) { -// try { -// String string = e.response().errorBody().string(); -// JSONObject content = new JSONObject(string); -// int code = content.getInt("code"); -// Utils.toast(context, context.getString(R.string.login_refresh_error)); -// if (code == 40802) { // 其他设备登录了该账号 -// EventBus.getDefault().post(new EBShowDialog("loginException", string)); // 打开提示框 -// } -// } catch (Exception e1) { -// e1.printStackTrace(); -// } -// } -// -// if (e == null || e.code() != Constants.NOT_NETWORK_CODE) { -// LoginUtils.cleanUserData(context); -// } -// isRefreshing = false; -// } -// }); + public void refreshToken(String token, final refreshCallBack callBack) { + if (isRefreshing) { + callBack.onLoginFailure(); + return; + } + isRefreshing = true; + RequestBody body = null; + try { + JSONObject device = DeviceUtils.getLoginDevice(mContext.getApplicationContext()); + JSONObject content = new JSONObject(); + content.put("refresh_token", token); + content.put("device", device); + body = RequestBody.create(MediaType.parse("application/json"), content.toString()); + } catch (JSONException e) { + e.printStackTrace(); + } + mUserseaService + .refreshToken(body) + .subscribe(new Response() { + @Override + public void onResponse(LoginTokenEntity response) { + super.onResponse(response); + LoginTokenEntity loginTokenEntity = UserManager.getInstance().getLoginTokenEntity(); + if (loginTokenEntity != null) { + response.setLoginType(loginTokenEntity.getLoginType()); + response.setId(loginTokenEntity.getId()); + } + savaLoginToken(response, mContext); + + refreshUserInfo(callBack, response.getId()); + } + + @Override + public void onFailure(HttpException e) { + super.onFailure(e); + if (callBack != null) { + callBack.onLoginFailure(); + } + + if (e != null) { + try { + String string = e.response().errorBody().string(); + JSONObject content = new JSONObject(string); + int code = content.getInt("code"); + Utils.toast(mContext, mContext.getString(R.string.login_refresh_error)); + if (code == 40802) { // 其他设备登录了该账号 + EventBus.getDefault().post(new EBShowDialog("loginException", string)); // 打开提示框 + } + + if (code == 40802 || code == 40401) { // 自动注销 + EventBus.getDefault().post(new EBReuse(PersonalFragment.LOGOUT_TAG)); + } + } catch (Exception e1) { + e1.printStackTrace(); + } + } + isRefreshing = false; + } + }); + } + + + private void refreshUserInfo(final refreshCallBack callBack, final String cacheId) { + mApiService + .getUserInfo() + .subscribe(new Response() { + @Override + public void onResponse(UserInfoEntity response) { + super.onResponse(response); + response.setId(cacheId); + saveUserInfo(response); + + if (callBack != null) { + callBack.onLogin(); + } + + isRefreshing = false; + } + + @Override + public void onFailure(HttpException e) { + super.onFailure(e); + if (callBack != null) { + callBack.onLoginFailure(); + } + + isRefreshing = false; + } + }); + } + + private void savaLoginToken(final LoginTokenEntity tokenEntity, final Context context) { + UserManager.getInstance().setLoginTokenEntity(tokenEntity); + + HaloApp.SINGLE_EXECUTOR.execute(new Runnable() { + @Override + public void run() { + if (mDatabase.loginTokenDao().updateToken(tokenEntity) <= 0) { + mDatabase.loginTokenDao().addToken(tokenEntity); + } + PreferenceManager.getDefaultSharedPreferences(context).edit().putString(Constants.LOGIN_TOKEN_ID, tokenEntity.getId()).apply(); + } + }); + } + + private void saveUserInfo(final UserInfoEntity userInfo) { + UserManager.getInstance().setUserInfoEntity(userInfo); + + HaloApp.SINGLE_EXECUTOR.execute(new Runnable() { + @Override + public void run() { + if (mDatabase.userInfoDao().updateUserInfo(userInfo) <= 0) { + mDatabase.userInfoDao().addUserInfo(userInfo); + } + } + }); + } + + + public interface refreshCallBack { + void onLogin(); + + void onLoginFailure(); } } diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java index ef643fd48d..1cc62958a0 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java +++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java @@ -21,7 +21,6 @@ import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.GetLoginDataUtils; -import com.gh.common.util.LoginUtils; import com.gh.common.util.PackageUtils; import com.gh.gamecenter.CollectionActivity; import com.gh.gamecenter.InstallActivity; @@ -171,13 +170,14 @@ public class PersonalFragment extends BaseFragment implements Observer Utils.getTime(mContext)) { - val params = HashMap() val value = refreshToken.value if (value == null) break - params.put("refresh_token", value) - RefreshTokenManager.getInstance().refreshToken(mContext, true, JSONObject(params), object : LoginUtils.onLoginCallBackListener { - override fun onLogin(entity: UserInfoEntity, loginTag: LoginUtils.LoginTag) { - val userLoginToken = UserManager.getInstance().loginTokenEntity + RefreshTokenManager.getInstance(mContext).refreshToken(value, object : RefreshTokenManager.refreshCallBack { + override fun onLogin() { val newBuilder = request.newBuilder() - newBuilder.header("TOKEN", userLoginToken?.accessToken?.value) + newBuilder.header("TOKEN", UserManager.getInstance().token) request = newBuilder.build() response = doRequest(chain, request) - EventBus.getDefault().post(EBReuse(PersonalFragment.LOGIN_TAG)) } override fun onLoginFailure() { @@ -85,8 +77,8 @@ class OkHttpRetryInterceptor internal constructor(context: Context) : Intercepto }) } else { // 重新登录 - LoginUtils.cleanUserData(mContext) Utils.toast(mContext, "账号过期,请重新登录!") + EventBus.getDefault().post(EBReuse(PersonalFragment.LOGOUT_TAG)) } } else { // 网络错误处理 response = doRequest(chain, request)