package com.gizwits.opensource.appkit.wxapi;

import java.io.IOException;
import org.apache.http.client.ClientProtocolException;
import org.json.JSONException;
import org.json.JSONObject;
import com.gizwits.gizwifisdk.enumration.GizThirdAccountType;
import com.gizwits.opensource.appkit.CommonModule.GosBaseActivity;
import com.gizwits.opensource.appkit.CommonModule.GosDeploy;
import com.gizwits.opensource.appkit.UserModule.GosUserLoginActivity;
import com.gizwits.opensource.appkit.utils.JsonUtils;
import com.tencent.mm.sdk.modelbase.BaseReq;
import com.tencent.mm.sdk.modelbase.BaseResp;
import com.tencent.mm.sdk.modelmsg.SendAuth;
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.sdk.openapi.WXAPIFactory;
import android.os.Bundle;
import android.os.Message;
import android.util.Log;

public class WXEntryActivity extends GosBaseActivity implements IWXAPIEventHandler {

	private static final String TAG = "WXEntryActivity";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		IWXAPI api = WXAPIFactory.createWXAPI(this, GosDeploy.setWechatAppID(), true);
		api.handleIntent(getIntent(), this);
	}

	@Override
	public void onReq(BaseReq req) {
		Log.e(TAG, "onReq...");
	}

	@Override
	public void onResp(BaseResp resp) {
		Log.e(TAG, "onResp...");
		Log.i("Apptest", "onResp...");
		String code = null;
		switch (resp.errCode) {
		case BaseResp.ErrCode.ERR_OK:// 用户同意,只有这种情况的时候code是有效的
			code = ((SendAuth.Resp) resp).code;
			Log.i("Apptest", code);
			getResult(code);
			break;
		case BaseResp.ErrCode.ERR_AUTH_DENIED:// 用户拒绝授权
			Log.e("Apptest", "用户拒绝授权");
			break;
		case BaseResp.ErrCode.ERR_USER_CANCEL:// 用户取消
			Log.e("Apptest", "用户取消");
			break;

		default:// 发送返回

			break;
		}
		finish();
	}

	/**
	 * 获取openid accessToken值用于后期操作
	 * 
	 * @param code
	 *            请求码
	 */
	private void getResult(final String code) {
		new Thread() {// 开启工作线程进行网络请求
			public void run() {
				String path = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + GosDeploy.setWechatAppID()
						+ "&secret=" + GosDeploy.setWechatAppSecret() + "&code=" + code
						+ "&grant_type=authorization_code";
				try {
					JSONObject jsonObject = JsonUtils.initSSLWithHttpClinet(path);// 请求https连接并得到json结果
					if (null != jsonObject) {
						String openid = jsonObject.getString("openid").toString().trim();
						String access_token = jsonObject.getString("access_token").toString().trim();
						Log.i(TAG, "openid = " + openid);
						Log.i(TAG, "access_token = " + access_token);

						GosUserLoginActivity.gizThirdAccountType = GizThirdAccountType.GizThirdWeChat;
						GosUserLoginActivity.thirdToken = access_token;
						GosUserLoginActivity.thirdUid = openid;

						Message msg = new Message();
						msg.what = GosUserLoginActivity.handler_key.THRED_LOGIN.ordinal();
						baseHandler.sendMessage(msg);

					}
				} catch (ClientProtocolException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				} catch (JSONException e) {
					e.printStackTrace();
				}
				return;
			};
		}.start();
	}

}