首先說明,本幫助文檔是利用javaweb的Servlet來進行“接口配置資訊配置資訊”認證的。
在學習微信公衆号開發的時候,讀到填寫伺服器配置的幫助部分,總是不能了解為啥按照他的步驟做總是設定失敗(吐槽:這個幫助寫的太簡略,原理講了一般,對不了解PHP的人簡直就是歧視)。
設定失敗的一個重要原因:url的請求相應沒有傳回echostr這個參數。
如果讀到這裡你還不能了解,就請看以下的截圖和源代碼:
1、首先我搭建了一個将區域網路内我的電腦釋出到intetnet上的環境,利用ngrok,如果想了解如何搭建,請檢視我的另一篇部落格:ngrok使用指令幫助
1 @WebServlet("/portal")
2 public class ServerPortal extends HttpServlet {
3 private static final long serialVersionUID = 1L;
4 private static final String token = "janken";
5
6 /**
7 * @see HttpServlet#HttpServlet()
8 */
9 public ServerPortal() {
10 super();
11 }
12
13 /**
14 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
15 */
16 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
17 String signature = request.getParameter("signature");
18 String timestamp = request.getParameter("timestamp");
19 String nonce = request.getParameter("nonce");
20 String echostr = request.getParameter("echostr");
21 System.out.println("signature:" + signature);
22 System.out.println("timestamp:" + timestamp);
23 System.out.println("nonce:" + nonce);
24 System.out.println("echostr:" + echostr);
25 PrintWriter pw = response.getWriter();
26 pw.append(echostr);
27 pw.flush();
28 }
29
30 /**
31 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
32 */
33 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
34 doGet(request, response);
35 }
36
37 }
4、根據ngrok提供的url和我們建立的servlet填寫微信的url和token
5、點選送出,這是微信會主動通路我們寫的servlet,獲得我們傳回的參數中的echostr的内容即可認證通過。
認證過程原理分析: