微信JSSDK-权限验证配置

官方文档

JS-SDK说明文档

通过config接口注入权限验证配置

具体步骤

  1. 根据公众号的appId和secret获取access_token
  2. 根据access_token获取ticket
  3. 签名算法

代码实现

@Service
public class WxService {

    @Autowired
    RestTemplate restTemplate;

    public Map<String,String> test(){
        String appId = "wx4edxxxxxxxxxd277";
        String url1="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appId+"&secret=2826f964b4xxxxxxxxx98dad7fa1faf1";
        Map forObject1 = restTemplate.getForObject(url1, Map.class);
        String access_token=(String) forObject1.get("access_token");

        String url2="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+access_token+"&type=jsapi";
        Map forObject2 = restTemplate.getForObject(url2, Map.class);

        String ticket=(String) forObject2.get("ticket");

        String noncestr = UUID.randomUUID().toString().replace("-","");
        String timestamp = String.valueOf(System.currentTimeMillis());
        String c="noncestr="+noncestr
                +"jsapi_ticket="+ticket
                +"timestamp="+timestamp
                +"url="+"http://mp.weixin.qq.com?params=value";
        String signature = sha1(c);
        Map<String,String> resultMap = new HashMap<>();
        resultMap.put("appId",appId);
        resultMap.put("timestamp",timestamp);
        resultMap.put("nonceStr",noncestr);
        resultMap.put("signature",signature);
        return resultMap;
    }

    public String sha1(String input){
        try {
            MessageDigest md = MessageDigest.getInstance("SHA-1");
            byte[] result = md.digest(input.getBytes());
            StringBuilder sb = new StringBuilder();
            for (byte b:result){
                sb.append(Integer.toString((b & 0xff) + 0x100,16).substring(1));
            }
            return sb.toString();
        }catch (NoSuchAlgorithmException e){
            e.printStackTrace();
        }
        return null;
    }
}

浏览器测试

{
  "msg": "success",
  "code": 200,
  "data": {
    "signature": "b8337b4be73087f36d9f98d3c9bfc99ab80b0b31",
    "appId": "wx4edxxxxxxxxxd277",
    "nonceStr": "12693585e70e4b9caa642311b654b9d6",
    "timestamp": "1701163306339"
  }
}

你可能感兴趣的:(java技术实现,微信)