当前位置: 首页 > news >正文

Java 实现uniapp本机手机号一键登录

这里简单的贴一下后端的解析代码 其他配置项参照uniapp的官方文档配置就好了

这里的accessToken和openid是前端请求uCloud获取的

@Data
public class UniAppLoginVO {private Integer code;private String message;private ResultDataVO data;private Boolean success;private ResultError error;
}
@Data
public class ResultDataVO {private Integer code;private Boolean success;private String phoneNumber;
}
    public User uniAppLogin(String accessToken, String openId) {try {String signStr = "access_token=" + accessToken + "&openid=" + openId;String sign = HmacSHA256Util.hmacSHA256(configMapper.selectConfigByConfigKey(CommonConstant.UNI_APP_LOGIN_KEY), signStr);String body = HttpRequest.get("你的云函数链接地址/getPhoneNumber?" + signStr + "&sign=" + sign).execute().body();UniAppLoginVO uniAppLoginVO = JSONObject.parseObject(body, UniAppLoginVO.class);if (uniAppLoginVO.getCode() == 1) {ResultDataVO resultDataVO = uniAppLoginVO.getData();if (resultDataVO.getSuccess().equals(Boolean.TRUE)) {return verifyLoginByCaptcha(resultDataVO.getPhoneNumber(), null);}else {throw new BasicsBootException("解析手机号失败");}}else {throw new BasicsBootException("服务异常获取手机号失败");}} catch (Exception e) {log.error("uniAppLogin error,{}", e.getMessage());}return null;}

以下是解析生成加密验证sign的工具类

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;public class HmacSHA256Util {/*** HmacSHA256算法,返回的结果始终是32位* @param key 加密的键,可以是任何数据* @param content 待加密的内容* @return 加密后的内容* @throws Exception*/public static byte[] hmacSHA256(byte[] key,byte[] content) throws Exception {Mac hmacSha256 = Mac.getInstance("HmacSHA256");hmacSha256.init(new SecretKeySpec(key, 0, key.length, "HmacSHA256"));return hmacSha256.doFinal(content);}/*** 将加密后的字节数组转换成字符串** @param b 字节数组* @return 字符串*/public 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();}/*** sha256_HMAC加密* @param message 消息* @param secret  秘钥* @return 加密后字符串*/public static String hmacSHA256(String secret, String message) throws Exception {Mac hmacSha256 = Mac.getInstance("HmacSHA256");hmacSha256.init(new SecretKeySpec(secret.getBytes(), "HmacSHA256"));byte[] bytes = hmacSha256.doFinal(message.getBytes());return byteArrayToHexString(bytes);}
}

以上就是所有后台处理的方法及工具类

相关文章:

Java 实现uniapp本机手机号一键登录

这里简单的贴一下后端的解析代码 其他配置项参照uniapp的官方文档配置就好了 这里的accessToken和openid是前端请求uCloud获取的 Data public class UniAppLoginVO {private Integer code;private String message;private ResultDataVO data;private Boolean success;private R…...

树莓派使用Nginx搭建web网站内存利用太低了?高效远程访问试试结合内网穿透进行

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《Linux深造日志》《C干货基地》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 一. Nginx安装步骤1.安装更新2.更新完成后安装Nginx 包3. 启动Nginx 二. 安装cpolar内网穿透工具1. 使用cpolar一…...

基于SSM的搬家预约系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…...

(论文阅读13/100)R-CNN minus R

文献阅读笔记 简介 题目 R-CNN minus R 作者 Karel Lenc Andrea Vedaldi 原文链接 https://arxiv.org/pdf/1506.06981.pdf 关键词 Null 研究问题 proposal generation在基于CNN的探测器中的作用&#xff0c;以确定它是否是一个必要的建模组件。 R-CNN留下的几个有趣…...

Jmeter和Postman哪个做接口测试会更好

软件测试行业做功能测试和接口测试的人相对比较多。在测试工作中&#xff0c;有高手&#xff0c;自然也会有小白&#xff0c;但有一点我们无法否认&#xff0c;就是每一个高手都是从小白开始的&#xff0c;所以今天我们就来谈谈一大部分人在做的接口测试&#xff0c;小白变高手…...

【算法|二分查找No.2】leetcode 69. x 的平方根

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…...

AI:56-基于深度学习的微表情识别

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…...

Jetpack Compose 中下拉框实现

下拉菜单主要 以下三种实现&#xff1a; ExperimentalMaterialApi Composable fun ExposedDropdownMenuBox(expanded: Boolean,onExpandedChange: (Boolean) -> Unit,modifier: Modifier Modifier,content: Composable ExposedDropdownMenuBoxScope.() -> Unit )实现代…...

输出最长公共字串

题目描述 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长公共子序列 示例 示例 1&#xff1a; 输入&#xff1a;text1 "abcde", text2 "ace" 输出&#xff1a;"ace" 示例 2&#xff1a; 输入&#xff1a;text1 &quo…...

学习经验分享【NO.19】YOLOv5可视化训练过程

将train.py中project的参数设置为如下&#xff1a; 点击AutoPanel即可&#xff1a; 得到如下的训练过程&#xff0c;可以观察所进行提升效果是否有用以及可以作为论文中的图&#xff0c;提高论文的档次。...

低代码可视化逻辑编排工具:JNPF

目录 Intro 一、是什么&#xff1f; 提供自动化的解决方案 二、为什么受欢迎&#xff1f; JNPF自身特点——安全、方便、高效、低耗 对于企业&#xff0c;更“安全” 成本“最低”&#xff0c;效率“最高” 三、JNPF开发平台功能展示 技术介绍 参考地址 近几年&#xff0c;随着…...

Redis创始人开源最小聊天服务器,仅200行代码,几天功夫已获2.8K Star!

中午时候&#xff0c;在技术交流群里聊起关于Redis创始人的一些趣事&#xff0c;比如离开Redis之后&#xff0c;去写科幻小说之类的。 因为好奇科幻小说&#xff0c;TJ君就去搜索了一下。结果一搜&#xff0c;发现Redis作者最近居然又搞了个新活儿&#xff01; 世界上最小的聊…...

RK-3399pro 萤火虫firefly 官方unbuntu 固件系统安装搜狗中文输入法

RK-3399pro 萤火虫firefly 官方unbuntu 固件系统安装搜狗输入法&#xff08;适用于所有基于Ubuntu的UI桌面系统&#xff09; 一、添加中文语言支持输入法平台fcitx 1.安装fcitx sudo apt-get install fcitx 2.然后设置fcitx为开机自启动 sudo cp /usr/share/applications/fc…...

2014年亚太杯APMCM数学建模大赛A题无人机创造安全环境求解全过程文档及程序

2014年亚太杯APMCM数学建模大赛 A题 无人机创造安全环境 原题再现 20 国集团&#xff0c;又称 G20&#xff0c;是一个国际经济合作论坛。2016 年第 11 届 20 国集团峰会将在中国召开&#xff0c;这是继 APEC 后中国将举办的另一个大型峰会。此类大型峰会&#xff0c;举办城市…...

Java字符串常用函数 详解5000字 (刷题向 / 应用向)

1.直接定义字符串 直接定义字符串是指使用双引号表示字符串中的内容&#xff0c;例如"Hello Java"、"Java 编程"等。具体方法是用字符串常量直接初始化一个 String 对象&#xff0c;示例如下&#xff1a; 1. String str"Hello Java"; 或者 …...

在RabbitMQ中 WorkQueue 工作队列 和发布(publish)/订阅(Subscribe) 有什么区别?

在RabbitMQ中&#xff0c;"Work Queue"&#xff08;工作队列&#xff09;和"Publish/Subscribe"&#xff08;发布/订阅&#xff09;是两种不同的消息传递模型&#xff0c;它们有不同的用途和工作方式。 Work Queue (工作队列)&#xff1a; 用途&#xff1a…...

关闭Dell xps 系列笔记本触控屏

【电脑】->【管理】->【设备管理器】 右键 禁用选择即可...

物理内存的组织形式

由于物理地址是连续的&#xff0c;页也是连续的&#xff0c;每个页大小也是一样的。因而对于任何一个地址&#xff0c;只要直接除一下每页的大小&#xff0c;很容易直接算出在哪一页。每个页有一个结构 struct page 表示&#xff0c;这个结构也是放在一个数组里面&#xff0c;这…...

IOS渲染流程之提交图层数据至RenderThread进程

大致链路 UIView/CALayer---->CoreAnimation./Core Graphics/Core Image---->GPU Drive-->GPU 图层树/视图树 一个UIView&#xff08;视图&#xff09;对应一个CALayer&#xff08;图层&#xff09;&#xff0c;CALayer对应显示的数据其有个content代表Bitamp&#…...

shell学习脚本05(小滴课堂)

可以对海量的数据进行提取。 -v对提取的内容进行取反。 -n显示出行号。 -w精确匹配&#xff1a; -i:忽略大小写&#xff1a; -E正则匹配&#xff1a; cut命令&#xff1a; -d指定分隔符&#xff0c;-f指定截取区域&#xff1a; 截取第一列到第三列&#xff1a; 截取第二列到最…...

Claude Code 可观测性工程爆火全解析:AI Agent 日志、遥测、追踪、成本监控与安全治理一次讲透

导语&#xff1a;AI Agent 真正进入生产环境后&#xff0c;最重要的问题不再是“能不能跑”&#xff0c;而是“跑得怎么样、哪里慢、哪里错、成本多少、有没有泄露、能不能恢复”。可观测性工程&#xff0c;就是把这些问题变成可度量、可告警、可追踪、可治理的系统能力。一图看…...

基于CW32F030的BLDC电机控制:从国产MCU到完整评估方案

1. 项目概述&#xff1a;从一颗国产MCU到一套完整的BLDC评估方案最近在做一个直流无刷电机&#xff08;BLDC&#xff09;的小项目&#xff0c;选型时发现了一款挺有意思的国产MCU——武汉芯源的CW32F030C8T6&#xff0c;以及围绕它打造的一套完整的评估套件CW32_BLCD_EVA。对于…...

测试岗真的是“青春饭”吗?40岁资深测试专家的职业复盘

在IT行业的诸多岗位中&#xff0c;软件测试岗常常被贴上“青春饭”的标签。不少从业者&#xff0c;尤其是刚入行的年轻人&#xff0c;总会在某个深夜陷入焦虑&#xff1a;“我到了35岁、40岁&#xff0c;还能在这个岗位上立足吗&#xff1f;”作为一名在测试领域深耕20年&#…...

企业号码认证服务:实现座机、手机来电显示公司名称+品牌LOGO

在如今的商业环境下&#xff0c;一通没有身份标识的电话&#xff0c;想要敲开客户的大门已经变得越来越难。反诈意识的普及&#xff0c;让人们对陌生呼叫筑起了厚厚的防御墙。许多企业在开展客户回访、售后跟进或业务接洽时&#xff0c;频繁遭遇拒接、秒挂的窘境。投入了大笔的…...

C语言编程入门:从变量、运算符到控制流与实战计算器

1. 项目概述&#xff1a;为什么C语言是程序员的“内功心法”&#xff1f;如果你刚刚完成“系列&#xff08;一&#xff09;”的安装和环境配置&#xff0c;恭喜你&#xff0c;你已经迈出了从“电脑使用者”到“程序创造者”最关键的一步。很多新手会问&#xff0c;现在有那么多…...

用 TensorFlow Estimator 实现 用户行为预测 的正确姿势

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 用 TensorFlow Estimator 实现用户行为预测的正确姿势&#xff1a;从数据工程到生产部署的全流程实践指南目录用 TensorFlow Est…...

创业团队如何利用taotoken管理多项目ai调用成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 创业团队如何利用Taotoken管理多项目AI调用成本 对于同时推进多个AI应用原型开发的创业团队而言&#xff0c;一个常见的挑战是如何…...

别再只下载不固化!紫光同创FPGA/CPLD烧录到Flash的保姆级避坑指南

紫光同创FPGA/CPLD烧录实战&#xff1a;从临时下载到永久固化的全流程精解 第一次成功将程序下载到紫光同创FPGA开发板时的兴奋&#xff0c;很快被一个残酷现实浇灭——断电重启后&#xff0c;所有心血归零。这个场景对许多初学者来说再熟悉不过。JTAG下载只是起点&#xff0c;…...

别再只盯着ADC了!74HC4067的另类玩法:DIY一个简易多路信号切换器与逻辑分析仪探头

74HC4067的创意实践&#xff1a;打造多功能信号切换与逻辑分析工具 在电子设计与调试过程中&#xff0c;多路信号切换和逻辑分析是两项基础但至关重要的任务。传统解决方案往往需要昂贵的专业设备&#xff0c;而本文将展示如何利用常见的74HC4067芯片&#xff0c;配合开源硬件和…...

传递函数极零点分析:从RC滤波器到系统稳定性设计

1. 从电路到方程&#xff1a;理解传递函数的基石在电子工程&#xff0c;尤其是模拟电路和信号处理领域&#xff0c;我们常常需要精确描述一个系统如何“加工”输入信号。比如&#xff0c;一个简单的RC低通滤波器&#xff0c;它如何让低频信号顺利通过&#xff0c;同时抑制高频噪…...