1. 程式人生 > >Java微信網頁授權授權獲取使用者基本資訊

Java微信網頁授權授權獲取使用者基本資訊

微信測試號申請地址:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login;

微信公眾平臺開發者文件地址:https://mp.weixin.qq.com/wiki/home/index.html;

網頁授權獲取使用者基本資訊

      具體步驟:
if(openId == null || openId.equals("")){
			//get userInfo
		    //第一步:使用者同意授權,獲取code
		   String code = (String)request.getParameter("code");
		   System.out.println("code:"+code);
		   if(null == code || code.equals("")){
			    String  GetCodeRequest = WxConfig.WEIXIN_OPENID_URL;
				String result = null;
				String uri = basePath + "lottery/toLottery.action?lottery.id=" + this.lottery.getId();
				System.out.println("rui:"+uri);
				if(flag == null){
					flag="game";
				}
				try{
					GetCodeRequest = GetCodeRequest.replace("APPID", URLEncoder.encode(serviceConf.getAppId(),"UTF-8"));
					GetCodeRequest = GetCodeRequest.replace("REDIRECT_URI",URLEncoder.encode(uri,"UTF-8"));
					GetCodeRequest = GetCodeRequest.replace("SCOPE", URLEncoder.encode(WxConfig.WEIXIN_SCOPE,"UTF-8"));
					GetCodeRequest = GetCodeRequest.replace("STATE", URLEncoder.encode(flag,"UTF-8"));
					result = GetCodeRequest;
					System.out.println("result:"+result);
					request.setAttribute("result", result);
					
					return "getOpenId";
				}catch(Exception e){
					e.printStackTrace();
					logger.error("get code error"+e);
				}
		   }else{
			   openId = WxConfig.getOpenId(code,serviceConf.getAppId(),serviceConf.getAppSecret());
			   request.getSession().setAttribute("openId", openId);
			   logger.info("get openId:"+openId);
		   }
WxConfig.java程式碼
public final static String WEIXIN_OPENID_URL ="https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect";
//根據access_token獲取openid
public final static String WEIXIN_ACCESS_TOKEN_OPENID_URL ="/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
<pre name="code" class="java">//獲取使用者標識openid
	public static String getOpenId(String code,String appId,String appSecret){
		String GetOpenidRequest = HttpUtil.WEIXIN_HOST_API +WEIXIN_ACCESS_TOKEN_OPENID_URL;
		logger.info("getOpenId微信提交路徑:"+GetOpenidRequest);

		GetOpenidRequest = GetOpenidRequest.replace("APPID", appId);
		GetOpenidRequest = GetOpenidRequest.replace("SECRET", appSecret);
		GetOpenidRequest = GetOpenidRequest.replace("CODE", code);
		logger.info("getOpenId微信提交路徑:"+WEIXIN_ACCESS_TOKEN_OPENID_URL);
		
		JSONObject json = JSONObject.fromObject(HttpUtil.get(GetOpenidRequest));
		System.out.println(json);
		String openid;
		try{
			logger.info("獲取openid--getOpenId()");
			openid = json.getString("openid");
			String accessToken = json.getString("access_token");
			logger.info("微信獲取到的使用者標識openid:"+openid+";access_token:"+accessToken);
			return openid;
		}catch (JSONException e) {
			openid = null;
			// 獲取openid失敗
			e.printStackTrace();
			logger.error("獲取token失敗 errcode:{}:"+json.getInt("errcode")+"errmsg:{}:"+json.getString("errmsg"));
		}
		return openid;
	}