Spring Boot Uniapp 一键登录后台验证
首先需要在Uniapp 官网配置验证地址,就是画横线的地方,后面我们需要用到。 controller.java
@PostMapping("/oneClickLogin") public AjaxResult oneClickLogin(@RequestBody LoginBody loginBody) { String sign= HeaUtil.sha256_HMAC("access_token="+loginBody.getAccessToken()+"&openid="+loginBody.getOpenId(),"这个是appsecrty"); String url="https://这个就是上图画线的地方/xxxx?access_token="+loginBody.getAccessToken()+"&openid="+loginBody.getOpenId()+"&sign="+sign; String res= HttpUtils.sendGet(url); if(StringUtils.isBlank(res)){ throw new RuntimeException("一键登录失败,请使用其他方式进行登录..."); } System.out.println("一键登录返回:"+res); JSONObject json= JSONObject.parseObject(res); if(json.getJSONObject("data")==null){ throw new RuntimeException("一键登录失败,请使用其他方式进行登录.."); } String phoneNumber= json.getJSONObject("data").getString("phoneNumber"); if(StringUtils.isBlank(phoneNumber)){ throw new RuntimeException("一键登录失败,请使用其他方式进行登录."); } return AjaxResult.success("操作成功",phoneNumber); }
HeaUtil.java
/** * sha256_HMAC加密 * * @param message 消息 * @param secret 秘钥 * @return 加密后字符串 */ public static String sha256_HMAC(String message, String secret) { String hash = ""; try { Mac sha256_HMAC = Mac.getInstance("HmacSHA256"); SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256"); sha256_HMAC.init(secret_key); byte[] bytes = sha256_HMAC.doFinal(message.getBytes()); hash = byteArrayToHexString(bytes); } catch (Exception e) { System.out.println("Error HmacSHA256 ===========" + e.getMessage()); } return hash; } /** * 将加密后的字节数组转换成字符串 * * @param b 字节数组 * @return 字符串 */ private static String byteArrayToHexString(byte[] b) { StringBuilder hs = new StringBuilder(); String stmp; for (int n = 0; b != null && n < b.length; n++) { stmp = Integer.toHexString(b[n] & 0XFF); if (stmp.length() == 1){ hs.append(0); } hs.append(stmp); } return hs.toString().toLowerCase(); }
上一篇:
JS实现多线程数据分片下载