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

阿里云一键登录(号码认证服务)

前言

用户登录原来的登录方式如下

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. 下面是全量知识系统中的翻译器的规划&#xff08;参考前一篇&#xff1a;全量知识系统 之 “百度翻译”。从“全量知识系统的翻译器”起。链接在下面&#xff09;。下面的文字分5次发出。链接&#xff1a; 全量知识系统 之 “百度翻译”-CSDN博客 第一次回答&#xff1a;…...

抓包工具获取请求信息

Charles 下载安装 下载 官方下载地址&#xff1a;https://www.charlesproxy.com/latest-release/download.do 下载后傻瓜式安装就好&#xff0c;这个官方的需要激活&#xff0c;可以选择绿色版或者学习版 绿色版 绿色中文版&#xff1a;https://soft.kxdw.com/pc/Charles.z…...

【Java Web】秒懂CSS样式!

目录 一、CSS的使用 二、CSS引用方式 三、CSS三大选择器 四、CSS浮动 五、CSS定位 六、CSS盒子模型 一、CSS的使用 css层叠样式表能够对网页中标签元素位置的排版进行像素级别的精确控制&#xff0c;支持几乎所有的字体和字号样式&#xff0c;拥有对网页对象和模型的样式…...

Go微服务: 基于net/rpc/jsonrpc模块实现微服务跨语言调用

概述 Golang 提供 net/rpc/jsonrpc 库来实现rpc方法采用 json 方式进行数据编解码&#xff0c;支持跨语言调用 这里实现跨语言示例 1 &#xff09;go 服务端 package main import ( "log" "net" "net/rpc" "net/rpc/jsonrpc" )…...

Guitar Pro 8.1中文版永久许可证激活2024最新24位注册激活码生成器

Guitar Pro是一款非常受欢迎的音乐制作软件&#xff0c;它可以帮助用户创建和编辑各种音乐曲谱。从其诞生以来就送专门为了编写吉他谱而研发迭代的。 尽管这款产品可能已经成为全球最受欢迎的吉他打谱软件&#xff0c;在编写吉他六线谱和乐队总谱中始终处于行业领先地位&#…...

自然语言处理(NLP)练习题

问题&#xff1a;什么是自然语言处理&#xff08;NLP&#xff09;&#xff1f; 答案&#xff1a;自然语言处理&#xff08;NLP&#xff09;是一种人工智能技术&#xff0c;旨在让计算机理解和处理人类语言。NLP涉及语言学、计算机科学和人工智能等多个领域&#xff0c;旨在开发…...

P2386 放苹果

题目传送门 题目描述 把 m 个同样的苹果放在n 个同样的盘子里&#xff0c;允许有的盘子空着不放&#xff0c;问共有多少种不同的分法。&#xff08;5,1,15,1,1 和 1,1,51,1,5 是同一种方法&#xff09; 输入格式 第一行是测试数据的数目 t&#xff0c;以下每行均包括二个整…...

TI IWR6843ISK ROS驱动程序搭建

1、设备准备 1.1 硬件设备 1&#xff09;TI IWR 6843 ISK 1块 2&#xff09;Micro USB 数据线 1条 1.2 系统环境 1&#xff09;VMware Workstation 15 Player 虚拟机 2&#xff09;Ubuntu18.04 并安装有 ROS1 系统 如若没有安装 ROS 系统&#xff0c;可通过如下指令进行…...

【Godot4自学手册】第二十节增加游戏的打击感,镜头震颤、冻结帧和死亡特效

这节我主要学习增加游戏的打击感。我们通过镜头震颤、冻结帧、增加攻击点特效&#xff0c;增加死亡。开始了。 一、添加攻击点特效 增加攻击点特效就是&#xff0c;在攻击敌人时&#xff0c;会在敌人受击点显示一个受击动画。 1.添加动画。 第一步先做个受击点动画。切换到…...

[论文笔记] Open-Sora 1、sora复现方案概览

GitHub - hpcaitech/Open-Sora: Unofficial implementation of OpenAIs Sora Open-Sora已涵盖: 提供完整的Sora复现架构方案,包含从数据处理到训练推理全流程。 支持动态分辨率,训练时可直接训练任意分辨率的视频,无需进行缩放。 支持多种模型结构。由于Sora实际模型结构未…...

持续更新 | 与您分享 Flutter 2024 年路线图

作者 / Michael Thomsen Flutter 是一个拥有繁荣社区的开源项目&#xff0c;我们致力于确保我们的计划公开透明&#xff0c;并将毫无隐瞒地分享从问题到设计规范的所有内容。我们了解到许多开发者对 Flutter 的功能路线图很感兴趣。我们往往会在一年中不断更改并调整这些计划&a…...

Go语言数据结构(二)堆/优先队列

文章目录 1. container中定义的heap2. heap的使用示例3. 刷lc应用堆的示例 更多内容以及其他Go常用数据结构的实现在这里&#xff0c;感谢Star&#xff1a;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 笔记 摘要 实现了一个任意视角视图生成算法&#xff1a;输入稀疏的场景图像&#xff0c;通过优化连续的Volumetric场景函数实现&#xff1b;用全连接深度网络表达场景&#xff0c;输入是一个连续的5维…...

深入理解nginx一致性哈希负载均衡模块[上]

1. 引言 在现代的网络应用中&#xff0c;负载均衡是一个至关重要的组件。它能够分配流量到多个服务器上&#xff0c;实现高可用性和性能扩展。Nginx是一个广泛使用的高性能Web服务器和反向代理服务器&#xff0c;其负载均衡模块提供了多种算法来实现流量的分发。其中&#xff0…...

【Linux】Docker安装

卸载旧版Docker 新版docker无法覆盖旧版的&#xff0c;所以需要先卸载原来的旧版本 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相关的论文&#xff0c;它们基本都是基于ORB-SLAM算法&#xff0c;下面简单记录一下它们的主要特点&#xff1a; 1.DynaSLAM 采用CNN网络进行分割多视图几何辅助的方式来判断动态点&#xff0c;并进行了背景修复工作。 2.Detect-SLAM 实时性问题&…...

数据挖掘:航空公司的客户价值分析

需求分析 理解并掌握聚类分析方法&#xff0c;掌握数据的标准化&#xff0c;掌握寻找最佳聚类数&#xff0c;掌握聚类的绘图&#xff0c;掌握聚类分析的应用场景。 系统实现 实验流程分析 借助航空公司数据&#xff0c;对客户进行分类对不同类别的客户进行特征分析&#xf…...

GIS之深度学习08:安装GPU环境下的pytorch

环境&#xff1a; cuda&#xff1a;12.1.1 cudnn&#xff1a;12.x pytorch&#xff1a;2.2.0 torchvision&#xff1a;0.17.0 Python&#xff1a;3.8 操作系统&#xff1a;win &#xff08;本文安装一半才发现pytorch与cuda未对应&#xff0c;重新安装了cuda后才开始的&a…...

防患未然,OceanBase巡检工具应用实践——《OceanBase诊断系列》之五

1. OceanBase为什么要做巡检功能 尽管OceanBase拥有很好的MySQL兼容性&#xff0c;但在长期的生产环境中&#xff0c;部署不符合标准规范、硬件支持异常&#xff0c;或配置项错误等问题&#xff0c;这些短期不会出现的问题&#xff0c;仍会对数据库集群构成潜在的巨大风险。为…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...