微信測試號,微信公眾號開發中token驗證的解決辦法,即介面配置資訊中的url和token怎麼設定的方法
阿新 • • 發佈:2018-12-31
首先我們來看兩張圖,第一張是微信公眾號中設定的圖
第二張是測試號中的圖片,之所以打馬賽克是怕不良之心的人,如果有疑問可以在文章後留言,因為本人在這個問題上搗鼓了好幾天,所以比較有心得,而微信公眾號的開發文件或者百度的資料都不多,所以很容易走彎路
現在講講介面配置資訊裡面的url和token到底填啥
微信需要一個請求一個URL來響應token驗證,也就是你點選確定的時候是向你指定的URL傳送一個請求,在請求裡面驗證你的token是否正確。也就是我們需要一個外網介面讓微信訪問,這個介面不需要傳入任何引數;注意必須是外網伺服器介面,微信才能呼叫.
所以需要寫一個介面放在伺服器上
import java.io.PrintWriter; import java.util.Enumeration; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @RequestMapping("/wechat") @Controller public class WechatController { private static Logger logger = Logger.getLogger(WechatController.class); private static String WECHAT_TOKEN = "wx_oms"; @RequestMapping(value = "/wx.do") public void get(HttpServletRequest request, HttpServletResponse response) throws Exception { logger.error("WechatController ---- WechatController"); System.out.println("========WechatController========= "); logger.info("請求進來了..."); Enumeration pNames = request.getParameterNames(); while (pNames.hasMoreElements()) { String name = (String) pNames.nextElement(); String value = request.getParameter(name); // out.print(name + "=" + value); String log = "name =" + name + " value =" + value; logger.error(log); } String signature = request.getParameter("signature");/// 微信加密簽名 String timestamp = request.getParameter("timestamp");/// 時間戳 String nonce = request.getParameter("nonce"); /// 隨機數 String echostr = request.getParameter("echostr"); // 隨機字串 PrintWriter out = response.getWriter(); //if (SignUtil.checkSignature(signature, timestamp, nonce)) { out.print(echostr); // }s out.close(); // out = null; } }
現在我來講講驗證原理:微信使用我們提供的token,通過演算法生成簽名,然後將這幾個引數(signature ,timestamp ,nonceechostr )傳給我們,我們服務端通過我們提供的token按照微信的演算法得出一個值,如果是同一個值說明token有效
現在你需要通過之前說的那個外網可以訪問的url訪問到我們這個類,也就是用url+' /wechat/wx.do '訪問到我們的方法,這樣微信就可以拿到我們的token了,然後就把這個url+' /wechat/wx.do '填寫在url的地方,你自己在程式碼中設定的token填寫在token的地方就可以完成驗證了