需求分析:
使用token来维持用户登陆状态是很常见的,但应当明确后台设置的token也都是有一定期限的,假如说是7天,那么我们的用户信息的获取必然是和token相绑定的,所以不可避免的我们的Android应用会存在token过期的问题,以下将一个开发案例来记录下如何自动刷新token的问题。
运行结果:
运行流程是获取相应的信息,首先是验证了token是否有效[包括一开始token不存在的情况去获取],发现是过期的或者无效的,紧接着去调用相应的api去获取登陆的token,之后再进行存储,然后请求成功。
核心代码,也都有注释。这里说明一点,获取token一定得是同步请求,异步会造成在返回对应的token之前已经进行了请求。
public class MyBaseApiRetrofit {
private final OkHttpClient mClient;
// 这里的token是从数据库中获得的-------------
private String token = "Bearer default";
public OkHttpClient getClient() {
return mClient;
}
public MyBaseApiRetrofit(){
//OkHttpClient
O