阿里云手机短信登录

news2025/1/23 9:24:18

阿里云短信服务介绍

阿里云短信服务(Short Message Service)是广大企业客户快速触达手机用户所优选使用的通信能力。调用API或用群发助手,即可发送验证码、通知类和营销类短信;国内验证短信秒级触达,到达率最高可达99%;国际/港澳台短信覆盖200多个国家和地区,安全稳定,广受出海企业选用。

应用场景:

场景

案例

验证码

APP、网站注册账号,向手机下发验证码; 登录账户、异地登录时的安全提醒; 找回密码时的安全验证; 支付认证、身份校验、手机绑定等。

短信通知

向注册用户下发系统相关信息,包括: 升级或维护、服务开通、价格调整、 订单确认、物流动态、消费确认、 支付通知等普通通知短信。

推广短信

向注册用户和潜在客户发送通知和推广信息,包括促销活动通知、业务推广等商品与活动的推广信息。增加企业产品曝光率、提高产品的知名度。

阿里云短信服务官方网站: https://www.aliyun.com/product/sms?spm=5176.19720258.J_8058803260.52.5c432c4a11Dcwf

可以访问官网,熟悉一下短信服务:

3 阿里云短信服务准备

1 注册账号

阿里云官网:https://www.aliyun.com/

点击官网首页注册按钮,跳转到如下注册页面:

当我们把账号注册完毕之后,我们就可以登录到阿里云系统控制台。

2 开通短信服务

注册成功后,点击登录按钮进行登录。登录后进入控制台, 在左上角的菜单栏中搜索短信服务。第一次使用,需要点击,并开通短信服务。

3 设置短信签名

开通短信服务之后,进入短信服务管理页面,选择国内消息菜单,我们需要在这里添加短信签名。

那么什么是短信签名呢?

短信签名是短信发送者的署名,表示发送方的身份。我们要调用阿里云短信服务发送短信,签名是比不可少的部分。

那么接下来,我们就需要来添加短信签名。

注意:
目前,阿里云短信服务申请签名主要针对企业开发,个人申请时有一定难度的,在审核时,会审核资质,需要上传营业执照 ;
所以,我们课程中,主要是演示一下短信验证码如何发送,大家只需要学习这块儿的开发流程、实现方式即可,无需真正的发送短信。如果以后在企业中做项目,需要发送短信,我们会以公司的资质去申请对应的签名。

4 设置短信模板

切换到【模板管理】标签页:

那么什么是模板呢?

短信模板包含短信发送内容、场景、变量信息。模板的详情如下:

最终我们,给用户发送的短信中,具体的短信内容,就是上面配置的这个模板内容,将${code}占位符替换成对应的验证码数据即可。如下:

【xxxxx】您好,您的验证码为173822,5分钟之内有效,不要泄露给他人!

我们可以点击右上角的按钮,添加模板,然后填写模板的基本信息及设置的模板内容:

添加的短信模板,也是需要进行审核的只有审核通过,才可以正常使用。

5 设置AccessKey

AccessKey 是访问阿里云 API 的密钥,具有账户的完全权限,我们要想在后面通过API调用阿里云短信服务的接口发送短信,那么就必须要设置AccessKey。

我们点击右上角的用户头像,选择"AccessKey管理",这时就可以进入到AccessKey的管理界面。

进入到AccessKey的管理界面之后,提示两个选项 "继续使用AccessKey" 和 "开始使用子用户AccessKey",两个区别如下:

1). 继续使用AccessKey

如果选择的是该选项,我们创建的是阿里云账号的AccessKey,是具有账户的完全权限,有了这个AccessKey以后,我们就可以通过API调用阿里云的服务,不仅是短信服务,其他服务(OSS,语音服务,内容安全服务,视频点播服务...等)也可以调用。 相对来说,并不安全,当前的AccessKey泄露,会影响到我当前账户的其他云服务。

2). 开始使用子用户AccessKey

可以创建一个子用户,这个子用户我们可以分配比较低的权限,比如仅分配短信发送的权限,不具备操作其他的服务的权限,即使这个AccessKey泄漏了,也不会影响其他的云服务, 相对安全。

接下来就来演示一下,如何创建子用户AccessKey。

6 配置权限

上述我们已经创建了子用户, 但是这个子用户,目前没有任何权限,接下来,我们需要为创建的这个用户来分配权限。

经过上述的权限配置之后,那么新创建的这个 reggie 用户,仅有短信服务操作的权限,不具备别的权限,即使当前的AccessKey泄漏了,也只会影响短信服务,其他服务是不受影响的。

7 禁用/删除AccessKey

如果在使用的过程中 AccessKey 不小心泄漏了,我们可以在阿里云控制台中, 禁用或者删除该AccessKey。

然后再创建一个新的AccessKey, 保存好AccessKeyId和AccessKeySecret。

注意: 创建好了AccessKey后,请及时保存AccessKeyId 和 AccessKeySecret ,弹窗关闭后将无法再次获取该信息,但您可以随时创建新的 AccessKey。

8 代码开发

使用阿里云短信服务发送短信,可以参照官方提供的文档即可。

官方文档: https://help.aliyun.com/product/44282.html?spm=5176.12212571.help.dexternal.57a91cbewHHjKq

我们根据官方文档的提示,引入对应的依赖,然后再引入对应的java代码,就可以发送消息了。

SDK : SDK 就是 Software Development Kit 的缩写,翻译过来——软件开发工具包,辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做SDK。在我们与第三方接口相互时, 一般都会提供对应的SDK,来简化我们的开发。

具体实现:

1). pom.xml

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.5.16</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
    <version>2.1.0</version>
</dependency>

2). 将官方提供的main方法封装为一个工具类 (utils包中)

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;

/**
 * 短信发送工具类
 */
public class SMSUtils {
	public static void sendMessage(String signName,
								   String templateCode,String phoneNumbers,String param){
		DefaultProfile profile = DefaultProfile
			.getProfile("cn-hangzhou",
				"",
				"");
		IAcsClient client = new DefaultAcsClient(profile);

		SendSmsRequest request = new SendSmsRequest();
		request.setSysRegionId("cn-hangzhou");
		request.setPhoneNumbers(phoneNumbers);
		request.setSignName(signName);
		request.setTemplateCode(templateCode);
		request.setTemplateParam("{\"code\":\""+param+"\"}");
		try {
			SendSmsResponse response = client.getAcsResponse(request);
			System.out.println(response.getMessage());
			if(response.getMessage().contains("OK")){
				System.out.println("短信发送成功");
			}
		}catch (ClientException e) {
			e.printStackTrace();
		}
	}
}
备注 : 由于我们个人目前无法申请阿里云短信服务,所以这里我们只需要把流程跑通,具体的短信发送可以实现。

4 阿里云市场短信服务(推荐)

注册购买

第一步:云市场搜索短信服务

地址:https://market.aliyun.com/?spm=5176.19720258.J_8058803260.16.e9392c4a1drmWI

第二步:选择购买的短信服务

第三步:点击购买,有5条免费使用,测试也会消耗使用次数,用完了在付费购买即可

第四步:找到自己购买的云服务

  • 在控制台中心,找到云市场,点击进入

可以看到已购买的服务

  • 这里有几项重要信息:AppKey AppSecret AppCode 调用购买的这个短信服务接口时候需要用到,用于确认使用者身份

接口 : 调用该服务时访问的接口

第五步: 测试接口的使用

地址:https://market.aliyun.com/products/57126001/cmapi00037415.html?spm=5176.2020520132.101.2.2e377218GRmLvt#sku=yuncode3141500001

注意不是购买,往下翻,购买下方就是测试内容以及提供的模板内容,如果需要自定义签名和模板内容,联系客服申请

第六步: 调试接口测试,发送成功说明服务购买成功,可以使用

代码使用

第一步:参考API,在【API接口】中已经给出了Java代码怎么调用该服务的接口

地址https://market.aliyun.com/products/57126001/cmapi00037415.html?spm=5176.2020520132.101.2.2e377218GRmLvt#sku=yuncode3141500001

第二步:参考API,编写发送短信工具类

  1. 在pom.xml中导入

    <dependency>
	 <groupId>cn.hutool</groupId>
	 <artifactId>hutool-all</artifactId>
	 <version>4.5.15</version>
	 </dependency>
  1. SMSUtilsMarket工具类放入瑞吉项目util包中

  1. 按照参数进行调用,主要参数说明,参考SMSUtilsMarket文件中的注释

package com.itheima.reggie;

import cn.hutool.http.HttpRequest;

import java.util.HashMap;
import java.util.Map;

/**
 * 短信发送工具类
 */
public class SMSUtilsMarket {

	/**
	 * *****************************
	 添加http请求工具类在pom.xml中
	 <dependency>
	 <groupId>cn.hutool</groupId>
	 <artifactId>hutool-all</artifactId>
	 <version>4.5.15</version>
	 </dependency>
	 * *****************************
	 // 1.mobile 手机号,用户自己输入
	 String mobile = "";
	 // 2. code 验证码 ,程序自动随机生成
	 String code = "5790";
	 短信内容为 { 验证码:**code**,**minute**分钟内有效,请勿泄漏于他人!})
	 // 3. smsSignId 签名ID(联系客服申请,测试请用:2e65b1bb3d054466b82f0c9d125465e2)
	 String smsSignId="2e65b1bb3d054466b82f0c9d125465e2";
	 // 4. templateId 模板ID
	  (联系客服申请。测试ID请用:908e94ccf08b4476ba6c876d13f084ad,
	 String templateId="908e94ccf08b4476ba6c876d13f084ad";
	 // 5. appCode 应用code
	     在https://market.console.aliyun.com/imageconsole/index.htm?#/bizlist?_k=r5f9m0查找
	 String appCode = "";
	 */
	public static void sendMessage(String mobile,String code,
								   String smsSignId,
								   String templateId,
								   String appCode){
		//请求连接
		String host = "https://gyytz.market.alicloudapi.com/sms/smsSend";
		//拼装请求体
		Map<String, Object> querys = new HashMap<String, Object>();
		querys.put("mobile", mobile);
		querys.put("param", "**code**:"+code+",**minute**:5");
		querys.put("smsSignId", smsSignId);
		querys.put("templateId", templateId);

		try {
			String result = HttpRequest.post(host)
									   .header("Authorization", "APPCODE " + appCode)//头信息,多个头信息多次调用此方法即可
									   .form(querys)//表单内容
									   .timeout(20000)//超时,毫秒
									   .execute().body();
			System.out.println(result);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/397120.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三维重建(单目、双目、多目、点云、SFM、SLAM)

1 相机几何与标定1.1 相机模型中的坐标系1.2 四种坐标系之间的转换1.3 相机内参1.4 相机标定2 单目三维重建2.1 NeuralRecon三维重建定义 在计算机视觉中, 三维重建是指根据单视图或者多视图的图像重建三维信息的过程. 由于单视频的信息不完全,因此三维重建需要利用经验知识. 而…

DJ1-2 操作系统引论

目录 一、操作系统的发展过程 1. 无操作系统 2. 单道批处理系统 3. 多道批处理系统 4. 分时操作系统 5. 实时系统 二、操作系统的基本特征 1. 并发性 2. 共享性 3. 虚拟性 4. 异步性 三、操作系统的主要功能 1. 处理机管理功能 2. 存储器管理功能 3. 设备管理功…

python pca/svd原理及应用

PCA的定义主成分分析&#xff0c;即Principal Component Analysis&#xff08;PCA&#xff09;&#xff0c;是多元统计中的重要内容&#xff0c;也广泛应用于机器学习和其它领域。它的主要作用是对高维数据进行降维。PCA把原先的n个特征用数目更少的k个特征取代&#xff0c;新特…

Elasticsearch使用——高级篇

1.数据聚合**聚合&#xff08;aggregations&#xff09;**可以让我们极其方便的实现对数据的统计、分析、运算。例如&#xff1a;什么品牌的手机最受欢迎&#xff1f;这些手机的平均价格、最高价格、最低价格&#xff1f;这些手机每月的销售情况如何&#xff1f;实现这些统计功…

【ns-3】添加nr(5G-LENA)模块

文章目录前言1. 下载5G-LENA源代码2. 配置并重新构建ns-3项目参考文献前言 本篇以ns-3.37为例介绍如何在ns-3中添加nr&#xff08;5G-LENA&#xff09;模块 [1]。5G-LENA是一个由Mobile Networks group CTTC&#xff08;Centre Tecnolgic de Telecomunicacions de Catalunya&a…

微信小程序开发学习笔记1——安心食疗

2.1小程序代码结构 目录结构 1.小程序的目录 pages:小程序的页面 页面路径 一个小程序页面由四个文件组成&#xff0c;分别是&#xff1a; xxx.js xxx.wxml xxx.json xxx.wxss 注意&#xff1a;为了方便开发者减少配置项&#xff0c;描述页面的四个文件必须具有相同的路径与文…

MySQL(二)视图、锁、存储过程、触发器、锁以及常用工具

MySQL进阶视图检查选项视图的更新存储过程存储过程基本语法变量系统变量用户自定义变量局部变量if判断参数casewhile循环repeat循环loop循环cursor游标handler条件处理程序存储函数触发器锁全局锁表级锁表锁元数据锁意向锁行级锁行锁间隙锁&临键锁InnoDB引擎逻辑存储结构事…

使用Arduino开发ESP32:开发环境搭建

开发环境搭建 使用Arduino开发ESP32开发环境搭建方式和用Arduino开发ESP8266相似&#xff1a;https://blog.csdn.net/Naisu_kun/article/details/80186950#t0 下载安装Arduino IDE&#xff1a; https://www.arduino.cc/en/Main/Software Arduino IDE中添加ESP32开发板数据&a…

第二道pwn题:shellcode

题目来自视频&#xff1a;链接&#xff1a;https://pan.baidu.com/s/17vX9dbfHkXBw71mcEXBgNQ?pwd6666 提取码&#xff1a;6666查看文件类型和保护&#xff0c;虽然现在的我还没有明白太多的保护。64位&#xff0c;放到ida里边rbp:保存的是栈中当前执行函数的基本地址。当前执…

xCAT安装指南

一、简介 xCAT使您能够轻松管理任何类型的技术计算工作负载的大量服务器。xCAT以卓越的扩展、各种支持的硬件和操作系统、虚拟化平台和完整的“day0”设置功能而闻名。 二、安装指南 免责声明 这些说明仅为指南&#xff0c;具体细节可能因操作系统版本而略有不同。有关最新推…

TCP与UDP

概述 传输层时向上层的应用层提供通讯服务的&#xff0c;是属于面向通信部份的最高层&#xff0c;同时也是用户功能的最底层 传输层有两个很重要的特点&#xff1a;复用、分用 复用&#xff1a;应用层所有的应用进程都可以通过运输层再传到网络层 分用&#xff1a;运输层从网…

【Unity】多分辨率适配

笔者按&#xff1a;使用Unity版本为2021.3LTS&#xff0c;与其他版本或有异同。请仅做参考 一、前言。 本文是笔者在学习使用Unity引擎的过程中&#xff0c;产学研的一个笔记。由笔者根据官方文档Unity User Manual 2021.3 (LTS)/Create user interfaces (UI)/Unity UI/UI 操作…

mingw编译opencv

我这里是msys2 这个是msys2的教程 https://blog.csdn.net/qq_39942341/article/details/105931335?ops_request_misc%257B%2522request%255Fid%2522%253A%2522167821146216800197067008%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&requ…

【LeetCode】剑指 Offer 24. 反转链表 p142 -- Java Version

题目链接&#xff1a;https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof/submissions/ 1. 题目介绍&#xff08;24. 反转链表&#xff09; 定义一个函数&#xff0c;输入一个链表的头节点&#xff0c;反转该链表并输出反转后链表的头节点。 【测试用例】&#xff1a; 示…

C++右值引用/移动语义

在此之前&#xff0c;我们所用的引用&#xff0c;其实都是左值引用。 int a 10; int& ra a; 下面我们来重新认识一下引用&#xff1a; 而何为左值&#xff1f;左值引用其实是什么&#xff1f;请往下看~ 左值是一个表示数据的表达式(如变量名或解引用的指针)&#xff…

77. writerows写入多行

文章目录1. 目标任务2. 准备工作3. writerow单行写入4. writerows多行写入5. a以追加的模式写入值6. 总结1. 目标任务 新建【各班级成绩】文件夹&#xff1b; 在该文件夹下新建一个【1班成绩单.csv】文件&#xff1b; 在该文件中写入下面的内容&#xff1a; 成绩 姓名 刘一…

CentOS 8搭建EMQX集群

概览 EMQX (opens new window)是一款大规模可弹性伸缩的云原生分布式物联网 MQTT (opens new window)消息服务器。 EMQ X 设计目标是实现高可靠&#xff0c;并支持承载海量物联网终端的MQTT连接&#xff0c;支持在海量物联网设备间低延时消息路由: 1. 稳定承载大规模的 MQTT 客…

Allegro如何添加菜单栏操作指导

Allegro如何添加菜单栏操作指导 用Allegro设计PCB的时候,将常用的命令放在菜单栏的话可以方便使用,省去设计时间,菜单如下图 Allegro支持自由添加或者删除菜单,具体操作如下 点击View点击Customize Toolbar

【使用vue init和vue create的区别以及搭建vue项目的教程】

vue init 是vue-cli2.x的初始化方式&#xff0c;可以使用github上面的一些模板来初始化项目 webpack是官方推荐的标准模板名 使用方式&#xff1a;vue init webpack 项目名称 例如使用github上面electron-vue的模板使用方式&#xff1a;vue init electron-vue 项目名称教程目…

Java的数据库编程:JDBC

Content &#x1f389;1什么是API &#x1f389;2.什么是JDBC &#x1f389;3.数据库驱动包的安装 &#x1f389;4.数据库安装包在idea的使用 &#x1f389;5.JDBC的增删改查的简单实现 今天为大家带来JAVA的数据库编程,也就是用Java实现数据库 数据库的最基本的操作就是…