package com.taobao.tae.Mshopping.demo.activity;
import android.content.Intent;
import android.os.Bundle;
import com.taobao.tae.Mshopping.demo.MshoppingApplication;
import com.taobao.tae.Mshopping.demo.R;
import com.taobao.tae.Mshopping.demo.constant.Constants;
import com.taobao.tae.Mshopping.demo.constant.UmengAnalysis;
import com.taobao.tae.Mshopping.demo.login.LoginType;
import com.taobao.tae.Mshopping.demo.login.qq.QQUser;
import com.tencent.connect.UserInfo;
import com.tencent.connect.auth.QQAuth;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;
import com.umeng.analytics.MobclickAgent;
import org.json.JSONException;
import org.json.JSONObject;
/**
* 腾讯QQ授权登录Activity
* Created by xinyuan on 14/7/3.
*/
public class QQOAuthLoginActivity extends BaseActivity {
private static final String TAG = QQOAuthLoginActivity.class.getName();
public static String mAppid;
public static QQAuth mQQAuth;
private UserInfo userInfo;
private QQUser qqUser;
private Tencent tencent;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mAppid = Constants.QQ_APP_ID;
mQQAuth = QQAuth.createInstance(mAppid, getApplicationContext());
tencent = Tencent.createInstance(mAppid, QQOAuthLoginActivity.this);
qqUser = new QQUser();
login();
MobclickAgent.setDebugMode(UmengAnalysis.isOpenAnalyticsDebug);
}
private void login() {
if (!mQQAuth.isSessionValid()) {
IUiListener listener = new BaseUiListener() {
@Override
protected void doComplete(JSONObject values) {
getUserInfo();
}
};
mQQAuth.login(this, "all", listener);
tencent.login(this, "all", listener);
} else {
mQQAuth.logout(this);
}
}
/**
* 获取用户基本信息
*/
private void getUserInfo() {
if (mQQAuth != null && mQQAuth.isSessionValid()) {
IUiListener listener = new IUiListener() {
@Override
public void onError(UiError e) {
}
@Override
public void onComplete(final Object response) {
JSONObject json = (JSONObject) response;
try {
if (json.has("nickname")) {
qqUser.setNick(json.getString("nickname"));
}
if (json.has("figureurl")) {
qqUser.setAvatar(json.getString("figureurl_qq_2"));
}
((MshoppingApplication) getApplication()).setUser(qqUser);
((MshoppingApplication) getApplication()).setLoginType(LoginType.QQ.getType());
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putInt("ACTIVITY_NAME_KEY", R.string.title_activity_qq_login);
intent.putExtras(bundle);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setClass(QQOAuthLoginActivity.this, HomeActivity.class);
startActivity(intent);
toast("登录成功");
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onCancel() {
}
};
userInfo = new UserInfo(this, mQQAuth.getQQToken());
userInfo.getUserInfo(listener);
qqUser.setQqAuth(mQQAuth);
}
}
private class BaseUiListener implements IUiListener {
@Override
public void onComplete(Object response) {
doComplete((JSONObject) response);
}
protected void doComplete(JSONObject values) {
}
@Override
public void onError(UiError uiError) {
toast("QQ登录失败");
finish();
}
@Override
public void onCancel() {
finish();
}
}
}