阿里云一键登录(号码认证服务)
前言
用户登录原来的登录方式如下
1. 手机号+验证码
2. 账号+密码
运营觉得操作过于复杂, 因此想引入阿里自动登录的逻辑, 也就是号码认证服务,所以才有了这篇问文章
注: 本文只是记录Java端的实现, app端的请自行查询文档实现
官方资料
文档 : 什么是号码认证服务_号码认证服务(PNVS)-阿里云帮助中心
调试地址: GetMobile_云通信号码认证服务_API调试-阿里云OpenAPI开发者门户
错误码地址: 号码认证服务的服务端API返回码_号码认证服务(PNVS)-阿里云帮助中心
系统时序交互图

其实并不复杂,简单说就是app获取token, 后端解析token,获取真正的手机号,但是经过阿里的加密可能会安全点咯
后端实现
引入依赖
参考来源 : 如何一键登录和本机号码校验GetMobile_号码认证服务(PNVS)-阿里云帮助中心
依赖如下:
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dypnsapi20170525</artifactId>
<version>1.0.6</version>
</dependency>
但是神奇的是没有提供具体的接口文档,或者是我自己没找到
工具类(直接使用)
@Slf4j
public class AliPhoneUtils {//阿里云基础信息private static final String KEY = "你的key";private static final String KEY_SECRET = "你的keySecret";//读取超时时间private static final int READ_TIME_OUT = 1000 * 10;//连接超时时间,防止系统卡死private static final int CONNECT_TIME_OUT = 1000 * 10;//成功标记private static final String SUCCESS = "OK";//只初始化一次即可private static Client client = null;static {try {initClient();} catch (Exception e) {log.error("初始化AliPhoneUtils->client失败");}}//初始化客户端private static void initClient() throws Exception{Config config = new Config();config.setAccessKeyId(KEY);config.setAccessKeySecret(KEY_SECRET);config.setReadTimeout(READ_TIME_OUT);config.setConnectTimeout(CONNECT_TIME_OUT);client = new Client(config);}//构建请求对象private static GetMobileRequest buildMobileRequest(String token) {GetMobileRequest mobileRequest = new GetMobileRequest();mobileRequest.setAccessToken(token);//可要可不要,应该是随机数之类的,但是不传也没影响,可能其他接口能用上这个值吧
// mobileRequest.setOutId("");return mobileRequest;}public static AliPhoneResult getPhone(String token){GetMobileRequest mobileRequest = buildMobileRequest(token);AliPhoneResult aliPhoneResult = new AliPhoneResult();log.info("getPhone 参数:{}", JsonUtils.Object2Json(mobileRequest));try {GetMobileResponse mobileResponse = client.getMobile(mobileRequest);GetMobileResponseBody body = mobileResponse.getBody();GetMobileResponseBody.GetMobileResponseBodyGetMobileResultDTO mobileResultDTO = body.getMobileResultDTO;//成功逻辑if(Objects.equals(body.getCode(), SUCCESS) && mobileResultDTO != null) {aliPhoneResult.setSuccess(true);aliPhoneResult.setMobile(mobileResponse.getBody().getMobileResultDTO.getMobile());} else {//失败逻辑,可以根据文档确定具体是啥错//https://help.aliyun.com/zh/pnvs/developer-reference/api-return-code?spm=a2c4g.11186623.0.0.54c837fb7QGUJLaliPhoneResult.setErrorMsg(body.getMessage());}log.info("getPhone 返回参数:{}", JsonUtils.Object2Json(mobileResponse));log.info("getPhone 返回body参数:{}", JsonUtils.Object2Json(body));} catch (Exception e) {log.error("getPhone,异常", e);aliPhoneResult.setErrorMsg("请求阿里云失败");}return aliPhoneResult;}public static void main(String[] args) {String token = "token";System.out.println(getPhone(token));}
}
关联类
@Data
public class AliPhoneResult implements Serializable {private static final long serialVersionUID = 1L;//是否发送成功private boolean isSuccess;//错误消息private String errorMsg;//成功时返回的手机号private String mobile;
}
核心参数及获取
AccessKeyId、AccessKeySecret : 就是你账号信息(登录阿里云那个账号) (必须)
READ_TIME_OUT: 读取超时,不要因为阿里云影响你系统,单位为毫秒 (非必须)
CONNECT_TIME_OUT: 连接超时,不要因为阿里云影响你系统,单位毫秒(非必须)
其他的就没啥了,直接看代码,也可以查看以下类能配置的信息
com.aliyun.teaopenapi.models.Config
后续
后面无非就是拿着手机号去进行注册或者登录,这里每个人业务可能不太一样,就没写了
总结
这个功能其实并不复杂,只要理解了流程就能搞明白。所以建议大家有空还是可以多画画流程图的。不用想着啥,就当是为了自己,你画一遍下来自然就知道要干啥了
相关文章:
阿里云一键登录(号码认证服务)
前言 用户登录原来的登录方式如下 1. 手机号验证码 2. 账号密码 运营觉得操作过于复杂, 因此想引入阿里自动登录的逻辑, 也就是号码认证服务,所以才有了这篇问文章 注: 本文只是记录Java端的实现, app端的请自行查询文档实现 官方资料 文档 : 什么是号码认证服务_号码认证服务(…...
全量知识系统中的翻译器以及百度文库AI应用中心给出的答复
Q1. 下面是全量知识系统中的翻译器的规划(参考前一篇:全量知识系统 之 “百度翻译”。从“全量知识系统的翻译器”起。链接在下面)。下面的文字分5次发出。链接: 全量知识系统 之 “百度翻译”-CSDN博客 第一次回答:…...
抓包工具获取请求信息
Charles 下载安装 下载 官方下载地址:https://www.charlesproxy.com/latest-release/download.do 下载后傻瓜式安装就好,这个官方的需要激活,可以选择绿色版或者学习版 绿色版 绿色中文版:https://soft.kxdw.com/pc/Charles.z…...
【Java Web】秒懂CSS样式!
目录 一、CSS的使用 二、CSS引用方式 三、CSS三大选择器 四、CSS浮动 五、CSS定位 六、CSS盒子模型 一、CSS的使用 css层叠样式表能够对网页中标签元素位置的排版进行像素级别的精确控制,支持几乎所有的字体和字号样式,拥有对网页对象和模型的样式…...
Go微服务: 基于net/rpc/jsonrpc模块实现微服务跨语言调用
概述 Golang 提供 net/rpc/jsonrpc 库来实现rpc方法采用 json 方式进行数据编解码,支持跨语言调用 这里实现跨语言示例 1 )go 服务端 package main import ( "log" "net" "net/rpc" "net/rpc/jsonrpc" )…...
Guitar Pro 8.1中文版永久许可证激活2024最新24位注册激活码生成器
Guitar Pro是一款非常受欢迎的音乐制作软件,它可以帮助用户创建和编辑各种音乐曲谱。从其诞生以来就送专门为了编写吉他谱而研发迭代的。 尽管这款产品可能已经成为全球最受欢迎的吉他打谱软件,在编写吉他六线谱和乐队总谱中始终处于行业领先地位&#…...
自然语言处理(NLP)练习题
问题:什么是自然语言处理(NLP)? 答案:自然语言处理(NLP)是一种人工智能技术,旨在让计算机理解和处理人类语言。NLP涉及语言学、计算机科学和人工智能等多个领域,旨在开发…...
P2386 放苹果
题目传送门 题目描述 把 m 个同样的苹果放在n 个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法。(5,1,15,1,1 和 1,1,51,1,5 是同一种方法) 输入格式 第一行是测试数据的数目 t,以下每行均包括二个整…...
TI IWR6843ISK ROS驱动程序搭建
1、设备准备 1.1 硬件设备 1)TI IWR 6843 ISK 1块 2)Micro USB 数据线 1条 1.2 系统环境 1)VMware Workstation 15 Player 虚拟机 2)Ubuntu18.04 并安装有 ROS1 系统 如若没有安装 ROS 系统,可通过如下指令进行…...
【Godot4自学手册】第二十节增加游戏的打击感,镜头震颤、冻结帧和死亡特效
这节我主要学习增加游戏的打击感。我们通过镜头震颤、冻结帧、增加攻击点特效,增加死亡。开始了。 一、添加攻击点特效 增加攻击点特效就是,在攻击敌人时,会在敌人受击点显示一个受击动画。 1.添加动画。 第一步先做个受击点动画。切换到…...
[论文笔记] Open-Sora 1、sora复现方案概览
GitHub - hpcaitech/Open-Sora: Unofficial implementation of OpenAIs Sora Open-Sora已涵盖: 提供完整的Sora复现架构方案,包含从数据处理到训练推理全流程。 支持动态分辨率,训练时可直接训练任意分辨率的视频,无需进行缩放。 支持多种模型结构。由于Sora实际模型结构未…...
持续更新 | 与您分享 Flutter 2024 年路线图
作者 / Michael Thomsen Flutter 是一个拥有繁荣社区的开源项目,我们致力于确保我们的计划公开透明,并将毫无隐瞒地分享从问题到设计规范的所有内容。我们了解到许多开发者对 Flutter 的功能路线图很感兴趣。我们往往会在一年中不断更改并调整这些计划&a…...
Go语言数据结构(二)堆/优先队列
文章目录 1. container中定义的heap2. heap的使用示例3. 刷lc应用堆的示例 更多内容以及其他Go常用数据结构的实现在这里,感谢Star:https://github.com/acezsq/Data_Structure_Golang 1. container中定义的heap 在golang中的"container/heap"…...
NERF论文笔记(1/2)
NeRF:Representing Scene as Neural Radiance Fields for View Synthesis 笔记 摘要 实现了一个任意视角视图生成算法:输入稀疏的场景图像,通过优化连续的Volumetric场景函数实现;用全连接深度网络表达场景,输入是一个连续的5维…...
深入理解nginx一致性哈希负载均衡模块[上]
1. 引言 在现代的网络应用中,负载均衡是一个至关重要的组件。它能够分配流量到多个服务器上,实现高可用性和性能扩展。Nginx是一个广泛使用的高性能Web服务器和反向代理服务器,其负载均衡模块提供了多种算法来实现流量的分发。其中࿰…...
【Linux】Docker安装
卸载旧版Docker 新版docker无法覆盖旧版的,所以需要先卸载原来的旧版本 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-eng…...
动态SLAM论文阅读笔记
近期阅读了许多动态SLAM相关的论文,它们基本都是基于ORB-SLAM算法,下面简单记录一下它们的主要特点: 1.DynaSLAM 采用CNN网络进行分割多视图几何辅助的方式来判断动态点,并进行了背景修复工作。 2.Detect-SLAM 实时性问题&…...
数据挖掘:航空公司的客户价值分析
需求分析 理解并掌握聚类分析方法,掌握数据的标准化,掌握寻找最佳聚类数,掌握聚类的绘图,掌握聚类分析的应用场景。 系统实现 实验流程分析 借助航空公司数据,对客户进行分类对不同类别的客户进行特征分析…...
GIS之深度学习08:安装GPU环境下的pytorch
环境: cuda:12.1.1 cudnn:12.x pytorch:2.2.0 torchvision:0.17.0 Python:3.8 操作系统:win (本文安装一半才发现pytorch与cuda未对应,重新安装了cuda后才开始的&a…...
防患未然,OceanBase巡检工具应用实践——《OceanBase诊断系列》之五
1. OceanBase为什么要做巡检功能 尽管OceanBase拥有很好的MySQL兼容性,但在长期的生产环境中,部署不符合标准规范、硬件支持异常,或配置项错误等问题,这些短期不会出现的问题,仍会对数据库集群构成潜在的巨大风险。为…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
企业大模型服务合规指南:深度解析备案与登记制度
伴随AI技术的爆炸式发展,尤其是大模型(LLM)在各行各业的深度应用和整合,企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者,还是积极拥抱AI转型的传统企业,在面向公众…...
Python学习(8) ----- Python的类与对象
Python 中的类(Class)与对象(Object)是面向对象编程(OOP)的核心。我们可以通过“类是模板,对象是实例”来理解它们的关系。 🧱 一句话理解: 类就像“图纸”,对…...
