最近在实现登录功能时,需要使用手机短信验证登录,于时找了很多第三方短信验证码服务方,最终挑选了一款免费的,但仅限于测试,对于想体验一下在项目中添加手机验证码功能的朋友可以玩玩,官网链接:容联云。本文将介绍如何通过接入容联云第三方短信验证码接口,来实现手机短信验证码登录。
1. 登录注册【官网控制台】
登陆成功后会送 8 元,可以用于测试。
2. 绑定测试手机号
3. 返回控制台首页,进入短信快速接入
然后再弹出的窗口中点击《免费测试指南》:
4. 进入SDK参考
再点击Java SDK文档:
5. 引入依赖官方提供的依赖
<dependency>
<groupId>com.cloopen</groupId>
<artifactId>java-sms-sdk</artifactId>
<version>1.0.4</version>
</dependency>
6. 测试代码
//生产环境请求地址:app.cloopen.com
String serverIp = "app.cloopen.com";
//请求端口
String serverPort = "8883";
//主账号,登陆云通讯网站后,可在控制台首页看到开发者主账号ACCOUNT SID和主账号令牌AUTH TOKEN
String accountSId = "accountSId";
String accountToken = "auth token";
//请使用管理控制台中已创建应用的APPID
String appId = "appId";
CCPRestSmsSDK sdk = new CCPRestSmsSDK();
sdk.init(serverIp, serverPort);
sdk.setAccount(accountSId, accountToken);
sdk.setAppId(appId);
sdk.setBodyType(BodyType.Type_JSON);
String to = "1352*******";
String templateId= "templateId";
String[] datas = {"变量1","变量2","变量3"};
String subAppend="1234"; //可选 扩展码,四位数字 0~9999
String reqId="fadfafas"; //可选 第三方自定义消息id,最大支持32位英文数字,同账号下同一自然天内不允许重复
//HashMap<String, Object> result = sdk.sendTemplateSMS(to,templateId,datas);
HashMap<String, Object> result = sdk.sendTemplateSMS(to,templateId,datas,subAppend,reqId);
if("000000".equals(result.get("statusCode"))){
//正常返回输出data包体信息(map)
HashMap<String,Object> data = (HashMap<String, Object>) result.get("data");
Set<String> keySet = data.keySet();
for(String key:keySet){
Object object = data.get(key);
System.out.println(key +" = "+object);
}
}else{
//异常返回输出错误码和错误信息
System.out.println("错误码=" + result.get("statusCode") +" 错误信息= "+result.get("statusMsg"));
}
代码中的accountSId
、accountToken
、appId
如下。
接下来进行测试:
public static void main(String[] args) {
//生产环境请求地址:app.cloopen.com
String serverIp = "app.cloopen.com";
//请求端口
String serverPort = "8883";
//主账号,登陆云通讯网站后,可在控制台首页看到开发者主账号ACCOUNT SID和主账号令牌AUTH TOKEN
String accountSId = "填你的";
String accountToken = "填你的";
//请使用管理控制台中已创建应用的APPID
String appId = "填你的";
CCPRestSmsSDK sdk = new CCPRestSmsSDK();
sdk.init(serverIp, serverPort);
sdk.setAccount(accountSId, accountToken);
sdk.setAppId(appId);
sdk.setBodyType(BodyType.Type_JSON);
String to = "填你的"; // 仅可以测试官网中填入的测试号码
String templateId= "1";
// 测试开发支持的文案如下:【云通讯】您的验证码是{1},请于{2}分钟内正确输入。其中{1}和{2}为短信模板参数。
// 随机一个验证码验证码
int code = RandomUtils.nextInt(1000, 9999);
String[] datas = {String.valueOf(code), "1"};
String subAppend="1234"; //可选 扩展码,四位数字 0~9999
String reqId=UUID.randomUUID().toString(); //可选 第三方自定义消息id,最大支持32位英文数字,同账号下同一自然天内不允许重复
//HashMap<String, Object> result = sdk.sendTemplateSMS(to,templateId,datas);
HashMap<String, Object> result = sdk.sendTemplateSMS(to,templateId,datas,subAppend,reqId);
if("000000".equals(result.get("statusCode"))){
//正常返回输出data包体信息(map)
HashMap<String,Object> data = (HashMap<String, Object>) result.get("data");
Set<String> keySet = data.keySet();
for(String key:keySet){
Object object = data.get(key);
System.out.println(key +" = "+object);
System.out.println("手机号: " + to + ", 验证码: " + code);
}
}else{
//异常返回输出错误码和错误信息
System.out.println("错误码=" + result.get("statusCode") +" 错误信息= "+result.get("statusMsg"));
}
}
成功收到验证码~~
大家可以集成到自己的登录功能中~~