1. 程式人生 > >微信開發 (四) 微信網頁授權

微信開發 (四) 微信網頁授權

微信網頁授權有什麼作用呢?它可以用來做獲取使用者的openId ,可以採用網頁授權登入,免除使用者登入。主要是為了獲取使用者的資訊。

網頁授權開發的第一步是在微信公眾平臺配置授權的域名配置的域名要求(


配置完授權的域名接下來就是:

1、引導使用者進入授權頁面同意授權,獲取code                                                               
這裡需要注意的是redirect_uri 必須要用urlencode對連結進行處理 測試號不進行處理可以,正式號的話就不行。
redirect_url只可以傳遞一個引數如果要多個引數該怎麼傳遞呢?多個引數lz是採用一個變數把所有的引數放到json裡面當成一個引數:網站名字/weixin/WeiXinCommGetOpenId?weixin_outh2_params=WEIXIN_OUTH2_PARAMS
注意這個授權必須要在微信瀏覽器開啟才可以
這裡可以獲取到code以及傳過來的引數一個json字串通過code可以獲取使用者的openId,授權也分為兩種,靜默授權和非靜默授權。非靜默授權除了可以獲取使用者的openid還可以獲取使用者的頭像。暱稱等。靜默授權只能獲取使用者的openid
附上獲取使用者openid的方法
  /**
	    * 
	    * @Title: getUserInfoOpenId
	    * @Description: 獲取請求使用者資訊的access_token
	    * @param @param code
	    * @param @return    
	    * @return String
	    */
	    public static String getUserInfoOpenId(String code) {
	    		logger.info("getUserInfoOpenId params code"+code);
	          String  openId= "";
		        try {
		        	if(StringUtil.isNotEmpty(code)){
			           String url =WeiXinConstant.WEIXIN_ACCESS_TOKEN_URL.replace("APPID", APPID).replace("SECRET", APPSECRET).replace("CODE",code);
			           logger.info("request accessToken from url: {}", url);
			           String  tokens= httpRequestGet(url, null);
			           logger.info("request tokens from tokens: {}", tokens);
			            if(StringUtil.isNotEmpty(tokens)){
			            	JSONObject json = JSONObject.fromObject(tokens);
			            	openId = json.getString("openid");
			            }
		        	}
		        } catch (Exception ex) {
		            logger.error("fail to request wechat access token. [error={}]"+code, ex);
		        }
	        return openId;
	    }