package com.emop.client.tasks; import static com.emop.client.Constants.TAG_EMOP; import org.json.JSONException; import org.json.JSONObject; import org.json.JSONTokener; import android.app.Activity; import android.content.Intent; import android.os.Handler; import android.os.Message; import android.util.Log; import com.emop.client.Constants; import com.emop.client.RegisterActivity; import com.emop.client.io.ApiResult; import com.emop.client.io.FmeiClient; import com.emop.client.io.WeiBoClient; import com.emop.client.io.WeiboUser; import com.weibo.net.Utility; import com.weibo.net.Weibo; import com.weibo.net.WeiboException; import com.weibo.net.WeiboParameters; public class GetSinaUserInfoTask extends Thread{ public final static int LOGIN_DONE = 1; public final static int LOGIN_MSG = 2; private String accessToken = null; private String uid = null; private Activity context = null; private Handler handler = null; public GetSinaUserInfoTask(String accessToken, String uid, Activity context, Handler handler){ this.accessToken = accessToken; this.uid = uid; this.context = context; this.handler = handler; } @Override public void run(){ FmeiClient client = FmeiClient.getInstance(null); Weibo weibo = Weibo.getInstance(); WeiboParameters bundle = new WeiboParameters(); bundle.add("access_token", accessToken); String url = Weibo.SERVER + "oauth2/get_token_info"; String json = null; JSONObject user = null; boolean isNew = true; ApiResult r = null; try { Log.d(TAG_EMOP, "start get weibo id:" + accessToken + ", uid:" + uid); if(uid == null){ json = weibo.request(context, url, bundle, Utility.HTTPMETHOD_POST, weibo.getAccessToken()); user = (JSONObject) new JSONTokener(json).nextValue(); if(user != null && user.has("uid")){ uid = user.getString("uid"); Log.d("tag", "get user id:" + uid); } } r = client.bindUserInfo("sina", uid, weibo.getAccessToken().getToken()); if(uid != null){ WeiBoClient weiboClient = new WeiBoClient(context); WeiboUser weiboUser = weiboClient.getProfile(uid); if(weiboUser != null){ client.saveRefUser(context, Constants.AUTH_REF_SINA, uid, weiboUser.getString("screen_name")); } } } catch (WeiboException e) { Log.d("tag", "msg:" + e.getMessage() + ", code:" + e.getStatusCode()); e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } if(r != null && r.isOK){ String status = r.getString("data.user_status"); if(status != null && status.trim().equals("2001")){ //rememberUserID(r.getString("oauth_token"), r.getString("data.user_id"), accessToken, uid); client.saveLoginUser(context, r.getString("data.user_id")); }else { startRegisterNew(accessToken, uid, r.getJSONObject("data")); } Message msg = handler.obtainMessage(LOGIN_DONE); handler.sendMessage(msg); }else { Message msg = handler.obtainMessage(LOGIN_DONE); msg.obj = "啊哦,网速不给力啊~"; handler.sendMessage(msg); } } private void startRegisterNew(String token, String sinaId, JSONObject obj){ Log.d("tag", "do Register, uid:" + sinaId); Intent intent = new Intent(); intent.putExtra(Weibo.TOKEN, token); intent.putExtra("uid", sinaId); try { intent.putExtra("userId", obj.getString("user_id")); } catch (JSONException e) { } intent.setClass(context, RegisterActivity.class); context.startActivity(intent); } }