在做小程序的一个功能的时候 我们需要用到消息推送
服务器ip,域名什么的都配置好了,但示token就是报错
下面的代码复制带走 修改一下配置就可以了,(大部分也是百度的,在这里做个笔记整合一下)


上图红线部分后面的地方就是我们验证token的接口路径

package org.begete.zhongkehaobo.demos.controller;import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.begete.zhongkehaobo.demos.config.AesException;
import org.begete.zhongkehaobo.demos.utils.WXPublicUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;@RestController
@RequestMapping("/wxpublic")
@Api(tags = "验证公众平台token")
@Slf4j
public class WXTokenController {@RequestMapping("/verify_wx_token")public String verifyWXToken(HttpServletRequest request) throws AesException {String msgSignature = request.getParameter("signature");String msgTimestamp = request.getParameter("timestamp");String msgNonce = request.getParameter("nonce");String echostr = request.getParameter("echostr");if (WXPublicUtils.verifyUrl(msgSignature, msgTimestamp, msgNonce)) {return echostr;}return null;}}
package org.begete.zhongkehaobo.demos.utils;import org.begete.zhongkehaobo.demos.config.AesException;
import org.begete.zhongkehaobo.demos.config.SHA1;public class WXPublicUtils {/*** 验证Token* @param msgSignature 签名串,对应URL参数的signature* @param timeStamp 时间戳,对应URL参数的timestamp* @param nonce 随机串,对应URL参数的nonce** @return 是否为安全签名* @throws AesException 执行失败,请查看该异常的错误码和具体的错误信息*/public static boolean verifyUrl(String msgSignature, String timeStamp, String nonce)throws AesException {// 这里的 WXPublicConstants.TOKEN 填写你自己设置的Token就可以了String signature = SHA1.getSHA1("123456", timeStamp, nonce);if (!signature.equals(msgSignature)) {throw new AesException(AesException.ValidateSignatureError);}return true;}
}

加密

package org.begete.zhongkehaobo.demos.config;import java.security.MessageDigest;
import java.util.Arrays;public class SHA1 {/*** 用SHA1算法验证Token** @param token     票据* @param timestamp 时间戳* @param nonce     随机字符串* @return 安全签名* @throws AesException*/public static String getSHA1(String token, String timestamp, String nonce) throws AesException {try {String[] array = new String[]{token, timestamp, nonce};StringBuffer sb = new StringBuffer();// 字符串排序Arrays.sort(array);for (int i = 0; i < 3; i++) {sb.append(array[i]);}String str = sb.toString();// SHA1签名生成MessageDigest md = MessageDigest.getInstance("SHA-1");md.update(str.getBytes());byte[] digest = md.digest();StringBuffer hexstr = new StringBuffer();String shaHex = "";for (int i = 0; i < digest.length; i++) {shaHex = Integer.toHexString(digest[i] & 0xFF);if (shaHex.length() < 2) {hexstr.append(0);}hexstr.append(shaHex);}return hexstr.toString();} catch (Exception e) {e.printStackTrace();throw new AesException(AesException.ComputeSignatureError);}}
}

微信小程序的消息推送的token的配置相关推荐

  1. 微信小程序开发—消息推送

    微信小程序的消息推送简单的说就是发送一条微信通知给用户,用户点开消息可以查看消息内容,可以链接进入到小程序的指定页面. 微信小程序消息推送需要用户触发动作才能发送消息,比如用户提交订单.支付成功.一次 ...

  2. 微信小程序开发消息推送配置教程

    微信小程序开发消息推送配置教程 微信小程序开发消息推送配置这一块网上都是PHP居多,由于用egg.js写了一套验证方法. 第一步:填写服务器配置 登录微信小程序官网后,在小程序官网的"设置- ...

  3. java推送微信消息换行_5行代码实现微信小程序模版消息推送 (含推送后台和小程序源码)...

    我们在做小程序开发时,消息推送是不可避免的.今天就来教大家如何实现小程序消息推送的后台和前台开发.源码会在文章末尾贴出来. 其实我之前有写过一篇:<springboot实现微信消息推送,java ...

  4. 【Node.js】实现微信小程序订阅消息推送功能

    实战项目名称:实现微信小程序订阅消息通知 文章目录 一.实战步骤 1. 登录微信小程序管理端,添加订阅消息模板 2. 定义好需要发送的消息 3.获取小程序的access_token 4. 发起请求,向 ...

  5. 【微信小程序】消息推送服务器配置及服务器域名配置(记录坑)

    我最近想在微信小程序推送通知,于是开始学怎么弄模板消息. 首先要配置服务器域名和消息推送配置. 先配置服务器域名吧,这个简单. 配置服务器域名 首先进入小程序后台>>开发>>开 ...

  6. 微信小程序订阅消息推送(附带后台java代码)

    官方文档: 小程序前端:点击进入 小程序服务端:点击进入 一,代码实现(后端) ①定义实体类 package com.saic.fin.system.sendInfo;import lombok.Da ...

  7. Java开发微信小程序订阅消息推送

    使用到开源工具WxJava 这里环境使用到springboot 框架,废话不多说直接上干货. pom.xml引用 <!-- https://mvnrepository.com/artifact/ ...

  8. 微信小程序订阅消息推送-php

    最近在给微信小程序写后端接口,有一个场景是 每天给指定账号推送 小程序消息,这期间踩了不少坑,希望记录下来能帮助导大家. 给小程序用户推送消息,首先需要获取用户的openid,这个是小程序的openi ...

  9. 微信小程序-接收消息推送

    [开发管理][开发设置][消息推送]---开发者服务器接收消息推送 点击启用的时候 会出现会填写服务器地址之类的信息,填写之后点击提交,会向填写的服务器地址发送get请求校验通过后才能成功启用. 当时 ...

最新文章

  1. 大话数据结构与算法:基础篇
  2. python字典中的值只能是字符串类型_python字典key不能是可以是啥类型
  3. TIOBE 11 月编程语言排行榜:C 逼近 Java,Swift 进入 Top 10
  4. 财务一体化项目,进度与计划8
  5. QT_Qsplitter
  6. 高等学校计算机房使用章程,普通高等学校设置暂行条例.DOC
  7. VMware Horizon USB重定向排除特定设备
  8. 央行数字货币DCEP首个应用场景落地,新的支付风口领域已现!
  9. python把int转为str_python中int与str互转方法
  10. radius服务器无响应,radius认证(radius认证超时)
  11. qpython3打开app_QPython3
  12. 高通WLAN框架学习(17)-- NIO和PNO
  13. 劫持域名,劫持是什么意思?seo教程
  14. nodejs安装weinre 及移动端调试网页
  15. Qt完成简易闹钟与画板
  16. 【数学】康托对于实数集大于自然数集的对角线证法
  17. 信任用苹果企业证书发布的app证书
  18. 38外观数列(循环遍历)
  19. java操作word、excel、pdf 下载添加水印
  20. R语言--MCMC算法介绍以及例子

热门文章

  1. CSS-sprit 雪碧图
  2. html中怎么写虚线框的宽高,html如何设置虚线边框
  3. android 扫描二维码黑屏,android--zxing返回扫描界面出现黑屏的解决方案
  4. C语言:数据文件操作
  5. Visual studio 2019 社区版下载和安装
  6. [NOIP2011 普及组] 瑞士轮
  7. php 快速导出百万级数据到 csv 或者 excel 文件
  8. ESP8266—01模块的3种工作模式
  9. Unity内存管理的原理
  10. PHP不包括字母,数字和下划线的webshell