package com.qiwenge.android.login; import java.io.IOException; import java.net.MalformedURLException; import java.net.SocketTimeoutException; import org.apache.http.conn.ConnectTimeoutException; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import com.qiwenge.android.constant.Constants_Tencent; import com.tencent.open.HttpStatusException; import com.tencent.open.NetworkUnavailableException; import com.tencent.tauth.Constants; import com.tencent.tauth.IRequestListener; import com.tencent.tauth.IUiListener; import com.tencent.tauth.Tencent; import com.tencent.tauth.UiError; /** * QQ登录 * * @author Eric */ public class TencentLogin { public static Tencent mTencent; /** * 登录 * * @param activity * @param authListener */ public static void login(Activity activity, final AuthListener authListener) { ThirdLoginUtils.loginType = LoginType.qq; authListener.onStart(); mTencent = Tencent.createInstance(Constants_Tencent.APP_ID, activity.getApplicationContext()); if (mTencent.isSessionValid()) { mTencent.logout(activity); } mTencent.login(activity, "all", new IUiListener() { @Override public void onError(UiError arg0) { System.out.println("TencentLogin-onError:" + arg0.errorMessage); if (authListener != null) authListener.onFailure(); } @Override public void onComplete(JSONObject arg0) { System.out.println("onComplete"); String openid = ""; if (arg0.has("openid")) { try { openid = arg0.getString("openid"); } catch (JSONException e) { e.printStackTrace(); } } getUserInfo(openid, authListener); } @Override public void onCancel() { } }); } /** * 获取用户资料。 * * @param openid * @param authListener */ public static void getUserInfo(final String openid, final AuthListener authListener) { System.out.println("getUserInfo-openid:" + openid); if (mTencent != null) { mTencent.requestAsync(Constants.GRAPH_SIMPLE_USER_INFO, null, Constants.HTTP_GET, new IRequestListener() { @Override public void onUnknowException(Exception arg0, Object arg1) { if (authListener != null) authListener.onFailure(); } @Override public void onSocketTimeoutException( SocketTimeoutException arg0, Object arg1) { if (authListener != null) authListener.onFailure(); } @Override public void onNetworkUnavailableException( NetworkUnavailableException arg0, Object arg1) { if (authListener != null) authListener.onFailure(); } @Override public void onMalformedURLException( MalformedURLException arg0, Object arg1) { if (authListener != null) authListener.onFailure(); } @Override public void onJSONException(JSONException arg0, Object arg1) { if (authListener != null) authListener.onFailure(); } @Override public void onIOException(IOException arg0, Object arg1) { if (authListener != null) authListener.onFailure(); } @Override public void onHttpStatusException( HttpStatusException arg0, Object arg1) { if (authListener != null) authListener.onFailure(); } @Override public void onConnectTimeoutException( ConnectTimeoutException arg0, Object arg1) { if (authListener != null) authListener.onFailure(); } @Override public void onComplete(JSONObject arg0, Object arg1) { System.out.println("getUserInfo-onComplete"); String nickname = ""; String avatar = "";// 头像 if (arg0.has("nickname")) { try { nickname = arg0.getString("nickname"); System.out.println("nickname:" + nickname); } catch (JSONException e) { e.printStackTrace(); } } if (arg0.has("figureurl_qq_2")) { try { avatar = arg0.getString("figureurl_qq_2"); } catch (JSONException e) { e.printStackTrace(); } } else if (arg0.has("figureurl_qq_1")) { try { avatar = arg0.getString("figureurl_qq_1"); } catch (JSONException e) { e.printStackTrace(); } } System.out.println("avatar:" + avatar); if (authListener != null) { authListener.authSuccess(openid, nickname, avatar, LoginType.qq); } } }, null); } } }