package com.michael.doubanonline.user; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Locale; import android.content.Context; import android.content.Intent; import com.alibaba.fastjson.JSON; import com.michael.doubanonline.CertificationActivity; import com.michael.doubanonline.db.DBManager; import com.michael.doubanonline.util.L; /** * 获取用户信息 * */ public class AccountHelper { /** * 获取用户的账户信息 * * 如果返回null,说明没有用户信息 * */ public static UserInfo getUserInfo(Context context) { DBManager dbManager = DBManager.getInstance(); String cache = dbManager.getCache(DBManager.USER_INFO); UserInfo userInfo = JSON.parseObject(cache, UserInfo.class); if(userInfo == null) { intentToLoginActivity(context); return null; } return userInfo; } /** * 如果没有Token或者过期 * */ public static String getAccessToken(Context context) { DBManager dbManager = DBManager.getInstance(); String cache = dbManager.getCache(DBManager.USER_CERTIFICATION); Certification certification = JSON.parseObject(cache, Certification.class); if(certification == null) { intentToLoginActivity(context); return null; } String cacheTime = dbManager.getCacheTime(DBManager.USER_CERTIFICATION); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()); long cacheTimeLong = -1; try { cacheTimeLong=sdf.parse(cacheTime).getTime(); } catch (ParseException e) { e.printStackTrace(); } // L.e("CurrentTime:", System.currentTimeMillis()+" cacheTimeLong:"+cacheTimeLong+" cacheTime:"+cacheTime); L.e("时间差:"+(System.currentTimeMillis() - cacheTimeLong), "过期时间:"+(Long.parseLong(certification.getExpires_in())*1000 - 86400000)); if((System.currentTimeMillis() - cacheTimeLong) > (Long.parseLong(certification.getExpires_in())*1000 - 86400000))//提前一天去重新获取Token { AccountCerfitication accountCerfitication = new AccountCerfitication(); accountCerfitication.getNewAccessTokenByRefreshToken(certification.getRefresh_token()); } return certification.getAccess_token(); } /** * 退出登录 * */ public static void logout() { DBManager dbManager = DBManager.getInstance(); dbManager.deleteCache(DBManager.USER_CERTIFICATION); dbManager.deleteCache(DBManager.USER_INFO); } /** * 跳转到登录界面 * */ private static void intentToLoginActivity(Context context) { Intent intent = new Intent(context, CertificationActivity.class); context.startActivity(intent); } }