600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 极光短信验证码服务器 极光推送的短信验证使用

极光短信验证码服务器 极光推送的短信验证使用

时间:2021-08-12 01:14:33

相关推荐

极光短信验证码服务器 极光推送的短信验证使用

首先,这个使用文档是极光推送的短信验证。别问我为什么不用阿里的短信,因为boss决定的,而且是一种很奇葩的方式验证。不过万一遇到跟我一样要这么用的。你完全可以参考我的这个篇文章。算是利人利己吧。

首先介绍下这个 极光推送,就是一个平台。里面服务主打app推送。但是也有发送短信的功能。其实文档也还算可以。sdk可用性也很高。不过到底看文档需要时间的。所以我直接写一下用法(仅限于短信)。

先附上极光的官网吧。点击直接跳转~~~

极光|数据改变世界

然后极光的短信验证码有两种使用方式。

1,自己生成短信验证码,自己记录自己对比。优点就是灵活性高。一次调用极光接口。

2,极光帮忙生成短信验证码,然后将用户输入的验证码再调用验证码验证接口去获取结果。返回一个boolean值。比对成功true,不成功false。

讲真,以前一直用阿里的自己生成短信验证码的我一开始有点理解不了第二种方式的使用。。不过其实现在觉得也还可以吧。毕竟还省的本地对验证码的存储和维护了,挺简单的。

然后我们项目中用的的第二种方式,所以这里以第二种方式为例子。

首先极光账号和开通服务就不说了。这是基本配置。然后生成模板也不提了。说一下这个验证码的模板。极光有一个现成的,id是1的一个五分钟验证码有效期模板。然后可以自定义一个sign作为短信头。(这里就以这个模板为例子)

首先引入依赖。如果你是从官方sdk上引入,要引入一大堆东西。其实用到的只有一个,别的都是日志打印什么的。因为我们项目自己有配置了,所以只引入用到的那个

cn.jpush.api

jsms-client

1.2.9

这个版本是我用的时候的最新版。现在.7.1。如果你看到的时候时间过好久了我建议你自己去官方查询最近版本。

然后是建立工具类JsmsUtil(名字你自己取,反正就是用来发短信和验证验证码的,因为我个人习惯把所有的第三方都放在一个service里了,省的再包装好几次调用,你可以别跟我学这么懒)。

//这个resultBean是我自己 封装的返回前端的方法。你们可以自定义 ,传入参数就是用户手机号

public ResultBean SendSMSCode(String tel) {

//极光封装好了的方法。appkey和masterSecret是参数。我就是定义的常量。你们是properties还是xml读取都ok的

SMSClient client = new SMSClient(masterSecret, appkey);

//这个TempId就是模板方法。我上面也说了我用的是id为1的通用五分钟模板方法。根据是实际需求你们自己看着写

SMSPayload payload = SMSPayload.newBuilder().setMobileNumber(tel).setTempId(1).build();

try {

//这一步就是正式发送了。然后极光给的返回值 res也是一个封装好了的对象。其中的msssageId是用来验证验证码的,要保存。剩下的code啥的,200成功。如果失败了有报错信息。我也只是机缘巧合下看到几个。。而且通俗易懂的,我就不特意讲了

SendSMSResult res =client.sendSMSCode(payload);

//在这我把整个res对象都返回去了。让前端自己取获取messageId。其实我还是推荐你们给提取出来的。哈哈

return Tools.result(200, "发送验证码成功", res, true);

} catch (Exception e) {

LOG.info("Error Message: " + e.getMessage());

return Tools.result(500, "发送验证码失败", null, false);

}

}

好的了。发送短信验证码就这么完成了。剩下的还有一个是验证验证码(说起来有点绕口 验证 “验证码” 是否正确)。

然后上面也说了,验证验证码需要发送的时候返回的messageId。还有就是用户输入验证码 这两个参数。用户输入对了返回true,输错了返回false。如果超过五分钟了哪怕用户输入对了也会返回false(这个也是我觉得虽然调个接口但是也比自己维护验证码强。不然还得存缓存设置过其时间啥的,简单就是王道啊)。附上代码:

//老规矩,ResultBean是我自己封住的。你们复制粘贴的时候自己改吧。两个参数都是前端返回的,msqId是发送验证码时候的那个messageId,vCode是用户输入的验证码。名字是Verification Code验证码的英文缩写 ,你们也可以自己定义

public ResultBean SendValidSMSCode(String msgId,String vCode) {

//创建连接对象

SMSClient client = new SMSClient(masterSecret, appkey);

try{

//发送验证码,注意一点。这个假如验证码错误就直接报错了

ValidSMSResult res = client.sendValidSMSCode(msgId ,valid);

return Tools.result(200, "验证码正确",res.getIsValid(), true);

} catch (Exception e) {

LOG.info("Error Message: " + e.getMessage());

return Tools.result(500, "验证失败", null, false);

}

}

到这一个完整的发送验证码和验证验证码就做完了。

其中有个坑我额外说一下:

就是这个发送短信的接口。在极光平台上的记录是可以看到短信发送是否成功的。但是在接口里,如果哪怕手机号码是空号,只要手机号格式正确也会返回200的。这是我一次无意间测试输入错了才发现的。

还有就是如果验证码错误,会直接报错。。我一开始还傻了吧唧以为验证码错误正常返回对象,只不过是isVolid是false呢。。然后屁颠屁颠还给res.getIsVolid做了个判断。。后来还是在测试的时候发现的问题。。然后就整改代码。。一下子缩成了两句话~~~

至此,极光推送的短信验证码功能已经实现。

另外再说点题外话,就是我写的好多技术贴,可能好多地方加了好多废话或者个人态度之类的。然后有的还写的特别小白,显而易见的东西也解释。其实这个是个人原因。因为我也是从小白过来的。你所以为的常识可能别人就是不懂。我多打几个字,你要是懂的就略过,真遇到不懂的注释用到了的,也就不枉费我花时间敲了。就因为我真的好多东西都是在网上别人的帖子,教程,博客啥的上面学到的,所以才决定自己也写点什么,指不定就帮到了谁。还有就是我写要是一点不在意粉丝啊,收藏啊,喜欢啊啥的有点太假了。有肯定更开心,也更有动力。但是哪怕没有,单纯的让别人看到了用到了,也是一种值得。然后又因为我所有的帖子,大多数都是我根据自己的理解写的,肯定有的说法不是很全面,说的不是很对甚至可能有错(这个以防万一,其实我写上来的都是自己实践过的,错的可能性不大)。所以大佬们有不同意见或者问题或者看到错误了非常希望您别怕麻烦给我留言指出来。万分感谢。

有问题留言,欢迎纠错~~

喏,手打不易,大家动动小手分享转发点赞评论啥的~~~~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。