package com.tejia.lijin.app.util.user;
|
|
import android.app.Activity;
|
import android.content.Context;
|
import android.content.Intent;
|
import android.util.Log;
|
import android.widget.Toast;
|
|
import com.google.gson.Gson;
|
import com.tejia.lijin.app.ui.mine.LoginSelectActivity;
|
import com.tejia.lijin.app.util.Constant;
|
import com.tencent.connect.auth.QQToken;
|
import com.tencent.connect.common.Constants;
|
import com.tencent.tauth.DefaultUiListener;
|
import com.tencent.tauth.IUiListener;
|
import com.tencent.tauth.Tencent;
|
import com.tencent.tauth.UiError;
|
|
import org.json.JSONException;
|
import org.json.JSONObject;
|
|
public class QQLoginManager {
|
private static QQLoginManager instance;
|
private Context mContext;
|
private Tencent mTencent = null;
|
|
private IUiListener qqLoginListener = null;
|
|
public QQLoginManager(Context context) {
|
this.mContext = context;
|
mTencent = Tencent.createInstance(Constant.QQ_APP_ID, mContext, "");
|
}
|
|
public static QQLoginManager getInstance(Context context) {
|
if (instance == null) {
|
instance = new QQLoginManager(context);
|
}
|
return instance;
|
}
|
|
|
/**
|
* 开始登录
|
*
|
* @param activity
|
* @param loginListener
|
*/
|
public void startLogin(Activity activity, final QQLoginListener loginListener) {
|
this.qqLoginListener = new DefaultUiListener() {
|
public void onComplete(Object var1) {
|
try {
|
JSONObject jsonObject = new JSONObject(var1.toString());
|
if (jsonObject.optInt("ret") != 0) {
|
loginListener.onAuthFail(jsonObject.optInt("ret"), jsonObject.optString("msg"));
|
return;
|
}
|
QQToken qqToken = new QQToken(Constant.QQ_APP_ID);
|
final String openId = jsonObject.optString("openid");
|
qqToken.setAccessToken(jsonObject.optString("access_token"), jsonObject.optString("expires_in"));
|
qqToken.setOpenId(openId);
|
com.tencent.connect.UserInfo info = new com.tencent.connect.UserInfo(mContext, qqToken);
|
info.getUserInfo(new DefaultUiListener() {
|
@Override
|
public void onComplete(Object o) {
|
super.onComplete(o);
|
try {
|
JSONObject data = new JSONObject(o.toString());
|
if (data.optInt("ret") != 0) {
|
loginListener.onGetUserInfoFail(data.optInt("ret"), data.optString("msg"));
|
return;
|
}
|
QQUserInfo qqUser = new Gson().fromJson(data.toString(), QQUserInfo.class);
|
qqUser.setOpenid(openId);
|
loginListener.onGetUserInfoSuccess(qqUser);
|
} catch (JSONException e) {
|
e.printStackTrace();
|
}
|
}
|
|
@Override
|
public void onError(UiError uiError) {
|
super.onError(uiError);
|
loginListener.onGetUserInfoFail(uiError.errorCode,uiError.errorMessage);
|
}
|
});
|
} catch (JSONException e) {
|
e.printStackTrace();
|
}
|
|
}
|
|
public void onError(UiError var1) {
|
loginListener.onAuthFail(var1.errorCode, var1.errorMessage);
|
}
|
|
public void onCancel() {
|
loginListener.onAuthCancel();
|
}
|
|
public void onWarning(int var1) {
|
}
|
};
|
|
mTencent.login(activity, "all", qqLoginListener);
|
|
}
|
|
/**
|
* activity 生命周期onActivityResult
|
*
|
* @param requestCode
|
* @param resultCode
|
* @param data
|
*/
|
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
if (qqLoginListener != null)
|
if (requestCode == Constants.REQUEST_LOGIN) {
|
Tencent.onActivityResultData(requestCode, resultCode, data, qqLoginListener);
|
}
|
}
|
|
|
public interface QQLoginListener {
|
public void onAuthCancel();
|
|
public void onAuthSuccess(String openId);
|
|
public void onAuthFail(int code, String msg);
|
|
public void onGetUserInfoSuccess(QQUserInfo user);
|
|
public void onGetUserInfoFail(int code, String msg);
|
}
|
|
public static class QQUserInfo {
|
private String openid;
|
private String nickname;
|
private String gender;
|
private int gender_type;
|
private String province;
|
private String city;
|
private String year;
|
private String figureurl;
|
private String figureurl_1;
|
private String figureurl_2;
|
|
public String getOpenid() {
|
return openid;
|
}
|
|
public void setOpenid(String openid) {
|
this.openid = openid;
|
}
|
|
public String getNickname() {
|
return nickname;
|
}
|
|
public void setNickname(String nickname) {
|
this.nickname = nickname;
|
}
|
|
public String getGender() {
|
return gender;
|
}
|
|
public void setGender(String gender) {
|
this.gender = gender;
|
}
|
|
public int getGender_type() {
|
return gender_type;
|
}
|
|
public void setGender_type(int gender_type) {
|
this.gender_type = gender_type;
|
}
|
|
public String getProvince() {
|
return province;
|
}
|
|
public void setProvince(String province) {
|
this.province = province;
|
}
|
|
public String getCity() {
|
return city;
|
}
|
|
public void setCity(String city) {
|
this.city = city;
|
}
|
|
public String getYear() {
|
return year;
|
}
|
|
public void setYear(String year) {
|
this.year = year;
|
}
|
|
public String getFigureurl() {
|
return figureurl;
|
}
|
|
public void setFigureurl(String figureurl) {
|
this.figureurl = figureurl;
|
}
|
|
public String getFigureurl_1() {
|
return figureurl_1;
|
}
|
|
public void setFigureurl_1(String figureurl_1) {
|
this.figureurl_1 = figureurl_1;
|
}
|
|
public String getFigureurl_2() {
|
return figureurl_2;
|
}
|
|
public void setFigureurl_2(String figureurl_2) {
|
this.figureurl_2 = figureurl_2;
|
}
|
}
|
|
|
}
|