说明
我的业务相对单一,简单的来说,就是:
- 注册时提供手机验证码
- 登录时,可以通过手机验证码
- 修改密码时,通过手机验证码
直接考虑使用阿里云短信业务
使用
前提:注册阿里云账号,并完成实名制认证
1、要有短信发送量
(1)阿里云提供了免费使用的100条限额,可以领取进行学习使用
前往:https://free.aliyun.com/?spm=5176.13910061.7708050970.1.7f8347efjDTrys
阿里云很多业务都提供限量或限时的试用免费套餐。如果学习短信,点击《短信免费使用套餐包》
(2)购买套餐
前往:https://common-buy.aliyun.com/?spm=5176.12207334.0.0.64f31cbeTwFph7&&commodityCode=newdysmsbag#/buy
如果首次购买,会优惠70元。
最低的套餐优惠后价格为180,包括5000条国内通用短信,时长2年。
2、测试(可以不用)
如果有了短信发送量,可以在以下页面进行测试,发送消息到本机:
https://dysms.console.aliyun.com/dysms.htm?accounttraceid=5d19ffca378e4784bd19ba63085ed246umbw&spm=5176.12901015.0.i12901015.690f525cy9tJK3#/quickStart
3、签名和模板
https://dysms.console.aliyun.com/dysms.htm?accounttraceid=5d19ffca378e4784bd19ba63085ed246umbw&spm=5176.12901015.0.i12901015.690f525cy9tJK3#/domestic/text/sign
(1)添加签名
主要指使用场景,比如某某网站,某某app。
这里可以写:“个人开发,学习使用”,或者“个人网站”。
(2)模板
模板就是发送的短信的内容,比如:
你的验证码${code},该验证码5分钟内有效,请勿泄露于他人!
其中的code在使用时可以通过代码替换为具体的字符串。
4、AccessKey
点击右上角《AccessKey》,进入。会弹出
可以选择《继续使用AccessKey》,但不建议:
这里给出的密钥具有你在阿里云的所有权限,一旦泄露,所有产品都可能受到波及。
选择《开始使用子用户AccessKey》,在RAM访问控制下选择《用户》:
创建的子账号,可以指定权限,使其只具有阿里云下部分产品的功能(注意:这里有个小bug,刚进入该页面时,会被提示创建子账号,如果没有创建则可以考虑直接创建。如果已经创建,点击用户组,再点击用户,会刷新出已创建账号)
创建子账号时,需要自己记录下密钥信息,之后不会再显示。如果确实忘记,可以删除再创建密钥。
5、发送短信API
发送短信阿里云提供了两种方式:OpenAPI Explorer和SDK(阿里云推荐)
我这里使用第一种。
https://api.aliyun.com/new?spm=5176.12207334.0.0.b8041cbeiK2J3u#/?product=Dysmsapi&api=SendSms¶ms={"RegionId"%3A"cn-hangzhou"%2C"PhoneNumbers"%3A""%2C"SignName"%3A""%2C"TemplateCode"%3A""}&tab=DEMO&lang=JAVA
(1)配置pom.xml
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.3</version>
</dependency>
(2)代码
public class SendSMS {
public static void main(String[] args) {
//1、给出accessKeyId和accessSecret
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "LTAI4*******Eb99", "izGrc2P1******Enoxa");
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
request.setSysMethod(MethodType.POST);
request.setSysDomain("dysmsapi.aliyuncs.com");
request.setSysVersion("2017-05-25");
request.setSysAction("SendSms");
request.putQueryParameter("RegionId", "cn-hangzhou");
//2、给出要接收短信的手机号
request.putQueryParameter("PhoneNumbers", "18190614119");
//3、给出签名名称
request.putQueryParameter("SignName", "skytreestudy");
//4、给出模板code
request.putQueryParameter("TemplateCode", "SMS_204297813");
///5、以json格式替换模板中的参数
request.putQueryParameter("TemplateParam", "{"code":123456}");
try {
CommonResponse response = client.getCommonResponse(request);
System.out.println(response.getData());
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
}
}
api参考
https://help.aliyun.com/document_detail/101339.html?spm=a2c4g.11186623.2.29.3d473e2cXExCtX