zoukankan      html  css  js  c++  java
  • 微信公众号开发(一)微信验证开发者服务器接口

    微信验证开发者服务器接口

    微信验证开发者服务器接口

    • 如图所示,开发者可填写自己服务器的验证token的接口地址,以及自定义的token(博主申请的测试号,使用natapp来进行内网穿透)
    • 目的:帮助微信服务器和开发者服务器互相识别,以防恶意攻击
    • 流程图如下(不知道博客园怎么显示md流程图,有知道的仁兄告知):(取自微信公众平台技术文档)

    
    ```flow
    st=>start: 开启服务
    ipop1=>inputoutput: 接收到数据【不确定是谁发来的】
    op1=>operation: 尝试提取出signature字段,timestamp字段,nonce字段,echostr字段
    cd1=>condition: 字段均提取成功?
    op2=>operation: token赋值为基本配置中的信息
    op3=>operation: token,timestamp,nonce字段排序得到字符串list
    op4=>operation: 哈希算法加密list得到hashcode
    cd2=>condition: hashcode == signature?
    op5=>operation: 确定该数据源是微信后台
    ipop2=>inputoutput: 把echostr返回给微信后台,供微信后台认证Token
    ed=>end: 继续其他服务
    op6=>operation: 确定该数据源不是微信后台
    ipop3=>inputoutput: 不处理
    st->ipop1->op1->cd1->op2->op3->op4->cd2->op5->ipop2->ed
    cd1(yes)->op2
    cd1(no)->op6->ipop3->ed
    cd2(yes)->op5
    cd2(no)->op6
    ```
    

    • java代码实现如下:
    	@GetMapping("/getToken")
    	@ResponseBody
    	public String getToken(TokenDTO tokenDTO, HttpServletResponse response){
    		if ((StringUtils.isBlank(tokenDTO.getSignature()) || StringUtils.isBlank(tokenDTO.getTimestamp()) || StringUtils.isBlank(tokenDTO.getNonce()) || StringUtils.isBlank(tokenDTO.getEchostr()))) {
    			return "";
    		}
    		String[] arr = new String[]{tokenDTO.getTimestamp(), WeixinConstant.token, tokenDTO.getNonce()};
    		Arrays.sort(arr);
    		StringBuffer sb = new StringBuffer();
    		sb.append(arr[0]).append(arr[1]).append(arr[2]);
    		String hash = null;
    		try {
    			hash = new String(Hex.encodeHex(MessageDigest.getInstance("SHA-1").
    					digest(sb.toString().getBytes(Constant.charset))));
    		} catch (UnsupportedEncodingException | NoSuchAlgorithmException e) {
    			e.printStackTrace();
    		}
    		return (StringUtils.isNoneBlank(hash) && hash.equals(tokenDTO.getSignature()))
    				? tokenDTO.getEchostr() : "";
    	}
    
  • 相关阅读:
    Linnia学习记录
    漫漫考研路
    ENS的学习记录
    KnockoutJS 3.X API 第四章 数据绑定(4) 控制流with绑定
    KnockoutJS 3.X API 第四章 数据绑定(3) 控制流if绑定和ifnot绑定
    KnockoutJS 3.X API 第四章 数据绑定(2) 控制流foreach绑定
    KnockoutJS 3.X API 第四章 数据绑定(1) 文本及样式绑定
    KnockoutJS 3.X API 第三章 计算监控属性(5) 参考手册
    KnockoutJS 3.X API 第三章 计算监控属性(4)Pure computed observables
    KnockoutJS 3.X API 第三章 计算监控属性(3) KO如何实现依赖追踪
  • 原文地址:https://www.cnblogs.com/tswhq/p/8157795.html
Copyright © 2011-2022 走看看