找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2901|回复: 0
打印 上一主题 下一主题
收起左侧

商城开发笔记-15-短信验证码SDK使用以及用户注册

[复制链接]
跳转到指定楼层
楼主
ID:109770 发表于 2016-3-22 17:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、短信SDK验证码验证流程简介

       用户填写完用户名以及密码之后,就可以进行短信验证。由于邮箱验证比较繁琐,一般都采用短信验证。

       短信验证的核心流程如下图所示:

                              

       如果是自己去做短信验证功能的话,最好按照以上流程走。一般为了节约经费,我们都是采用接入第三方的短信验证SDK的方式来进行开发。
       MOB的短信验证SDK为例,SDK已经封装好以上流程,用户只需要知道API接口就可以进行短信验证。试用期的话,每天上限20条。


二、短信SDK接入
1、在短信SDK的网址注册,然后注册APP,获取APPKey等信息。

2、按照官方文档进行集成。需要注意的是,在Android Studio中是通过Module的信息进行Library依赖。另外,如果发生jar包冲突(重复)的话,最好多建一个globalLibrary,并且把该jar放进去,其余Module删除,引用globalLibrary即可。


三、短信SDK使用
1、一般来说,需要进行SDK初始化,初始化中传入APPKey等信息。如果有注销的方法也要在onDestroy()方法中调用,以免内存泄漏。
SMSSDK.initSDK(.......);
2、根据官方文档进行开发,每一套SDK的使用都不一样,需要仔细阅读文档。遇到不懂的,除了文档以外,官方Demo也可以参考获取Copy


注意要点:

1、一般请求短信验证码需要传国家代号以及电话作为参数,中国是86。电话号码最好做一下合法判断,比如长度、正则表达式匹配等。参考例子如下:
/**
* 检查国家代号以及手机号码是否正确
* @param phone
* @param code
*/
private void checkPhoneNum(String phone, String code) {
    if (code.startsWith("+")) {
        code = code.substring(1);
    }
    if (TextUtils.isEmpty(phone)) {
        ToastUtils.showToast(this, "请输入手机号码");
        return;
    }
    if (code == "86") {
        if (phone.length() != 11) {
            ToastUtils.showToast(this, "手机号码长度不对");
            return;
        }
    }
    //正则匹配中国手机号码
    String rule = "^1(3|5|7|8|4)\\d{9}";
    Pattern p = Pattern.compile(rule);
    Matcher m = p.matcher(phone);
    if (!m.matches()) {
        ToastUtils.showToast(this, "您输入的手机号码格式不正确");
        return;
    }
}

2、短信验证码请求间隔一般要大于60秒(具体SDK不同),否则服务器会返回“请求过于频繁”。因此我们自定义按钮计时器:

public class CountTimerView extendsCountDownTimer {
    public static final int TIME_COUNT = 61000;//时间防止从59s开始显示(以倒计时60s为例子)
    private TextView btn;
    private int endStrRid;
    /**
     * 参数 millisInFuture      倒计时总时间(如60S120s等)
     * 参数 countDownInterval   渐变时间(每次倒计1s
     * 参数 btn   点击的按钮(因为ButtonTextView子类,为了通用我的参数设置为TextView
     * 参数 endStrRid   倒计时结束后,按钮对应显示的文字
     */
    public CountTimerView(long millisInFuture, longcountDownInterval, TextView btn, int endStrRid) {
        super(millisInFuture, countDownInterval);
        this.btn = btn;
        this.endStrRid = endStrRid;
    }
    /**
     * 参数上面有注释
     */
    public CountTimerView(TextView btn, int endStrRid) {
        super(TIME_COUNT, 1000);
        this.btn = btn;
        this.endStrRid = endStrRid;
    }
    public CountTimerView(TextView btn) {
        super(TIME_COUNT, 1000);
        this.btn = btn;
        this.endStrRid = R.string.smssdk_resend_identify_code;
    }
    // 计时完毕时触发
    @Override
    public void onFinish() {
        btn.setText(endStrRid);
        btn.setEnabled(true);
    }
    // 计时过程显示
    @Override
    public void onTick(long millisUntilFinished) {
        btn.setEnabled(false);
        btn.setText(millisUntilFinished/ 1000 + " 秒后可重新发送");
    }
}



四、短信验证完整流程

1、用户数据用户名以及密码

2、判断用户名以及密码的合法性

3、调用短信SDK获取验证码的接口,获取验证码

4、用户收到,输入验证码

5、获取用户输入的验证码,调用短信SDK验证码验证的接口,进行验证

6、验证通过以后,在回调中调用自己服务器的注册API,进行注册,注册成功,销毁本Activity,跳到主Activity


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表