package com.sina.weibo.sdk.auth; import android.content.Context; import android.content.SharedPreferences; import com.ali.auth.third.login.LoginConstants; import com.sina.weibo.sdk.exception.WeiboException; import com.sina.weibo.sdk.net.RequestListener; import com.sina.weibo.sdk.network.IRequestService; import com.sina.weibo.sdk.network.impl.RequestParam; import com.sina.weibo.sdk.network.impl.RequestService; import com.sina.weibo.sdk.network.target.SimpleTarget; public class AccessTokenKeeper { private static final String KEY_ACCESS_TOKEN = "access_token"; private static final String KEY_EXPIRES_IN = "expires_in"; private static final String KEY_REFRESH_TOKEN = "refresh_token"; private static final String KEY_UID = "uid"; private static final String PREFERENCES_NAME = "com_weibo_sdk_android"; public static void clear(Context context) { if (context != null) { SharedPreferences.Editor edit = context.getSharedPreferences(PREFERENCES_NAME, 32768).edit(); edit.clear(); edit.commit(); } } public static Oauth2AccessToken readAccessToken(Context context) { if (context == null) { return null; } Oauth2AccessToken oauth2AccessToken = new Oauth2AccessToken(); SharedPreferences sharedPreferences = context.getSharedPreferences(PREFERENCES_NAME, 32768); oauth2AccessToken.setUid(sharedPreferences.getString("uid", "")); oauth2AccessToken.setToken(sharedPreferences.getString("access_token", "")); oauth2AccessToken.setRefreshToken(sharedPreferences.getString("refresh_token", "")); oauth2AccessToken.setExpiresTime(sharedPreferences.getLong("expires_in", 0)); return oauth2AccessToken; } public static void refreshToken(String str, final Context context, final RequestListener requestListener) { Oauth2AccessToken readAccessToken = readAccessToken(context); if (readAccessToken != null) { IRequestService instance = RequestService.getInstance(); RequestParam.Builder builder = new RequestParam.Builder(context); builder.setShortUrl("https://api.weibo.com/oauth2/access_token"); builder.addPostParam("client_id", str); builder.addPostParam(LoginConstants.KEY_APPKEY, str); builder.addPostParam("grant_type", "refresh_token"); builder.addPostParam("refresh_token", readAccessToken.getRefreshToken()); instance.asyncRequest(builder.build(), new SimpleTarget() { /* class com.sina.weibo.sdk.auth.AccessTokenKeeper.AnonymousClass1 */ @Override // com.sina.weibo.sdk.network.target.Target public void onFailure(Exception exc) { RequestListener requestListener = requestListener; if (requestListener != null) { requestListener.onWeiboException(new WeiboException(exc)); } } @Override // com.sina.weibo.sdk.network.target.SimpleTarget public void onSuccess(String str) { AccessTokenKeeper.writeAccessToken(context, Oauth2AccessToken.parseAccessToken(str)); RequestListener requestListener = requestListener; if (requestListener != null) { requestListener.onComplete(str); } } }); } } public static void writeAccessToken(Context context, Oauth2AccessToken oauth2AccessToken) { if (context != null && oauth2AccessToken != null) { SharedPreferences.Editor edit = context.getSharedPreferences(PREFERENCES_NAME, 32768).edit(); edit.putString("uid", oauth2AccessToken.getUid()); edit.putString("access_token", oauth2AccessToken.getToken()); edit.putString("refresh_token", oauth2AccessToken.getRefreshToken()); edit.putLong("expires_in", oauth2AccessToken.getExpiresTime()); edit.commit(); } } }