找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2825|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

商城開發(fā)筆記-15-短信驗(yàn)證碼SDK使用以及用戶注冊(cè)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:109770 發(fā)表于 2016-3-22 17:32 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
一、短信SDK驗(yàn)證碼驗(yàn)證流程簡(jiǎn)介

       用戶填寫完用戶名以及密碼之后,就可以進(jìn)行短信驗(yàn)證。由于郵箱驗(yàn)證比較繁瑣,一般都采用短信驗(yàn)證。

       短信驗(yàn)證的核心流程如下圖所示:

                              

       如果是自己去做短信驗(yàn)證功能的話,最好按照以上流程走。一般為了節(jié)約經(jīng)費(fèi),我們都是采用接入第三方的短信驗(yàn)證SDK的方式來(lái)進(jìn)行開發(fā)。
       MOB的短信驗(yàn)證SDK為例,SDK已經(jīng)封裝好以上流程,用戶只需要知道API接口就可以進(jìn)行短信驗(yàn)證。試用期的話,每天上限20條。


二、短信SDK接入
1、在短信SDK的網(wǎng)址注冊(cè),然后注冊(cè)APP,獲取APPKey等信息。

2、按照官方文檔進(jìn)行集成。需要注意的是,在Android Studio中是通過(guò)Module的信息進(jìn)行Library依賴。另外,如果發(fā)生jar包沖突(重復(fù))的話,最好多建一個(gè)globalLibrary,并且把該jar放進(jìn)去,其余Module刪除,引用globalLibrary即可。


三、短信SDK使用
1、一般來(lái)說(shuō),需要進(jìn)行SDK初始化,初始化中傳入APPKey等信息。如果有注銷的方法也要在onDestroy()方法中調(diào)用,以免內(nèi)存泄漏。
SMSSDK.initSDK(.......);
2、根據(jù)官方文檔進(jìn)行開發(fā),每一套SDK的使用都不一樣,需要仔細(xì)閱讀文檔。遇到不懂的,除了文檔以外,官方Demo也可以參考獲取Copy。


注意要點(diǎn):

1、一般請(qǐng)求短信驗(yàn)證碼需要傳國(guó)家代號(hào)以及電話作為參數(shù),中國(guó)是86。電話號(hào)碼最好做一下合法判斷,比如長(zhǎng)度、正則表達(dá)式匹配等。參考例子如下:
/**
* 檢查國(guó)家代號(hào)以及手機(jī)號(hào)碼是否正確
* @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, "請(qǐng)輸入手機(jī)號(hào)碼");
        return;
    }
    if (code == "86") {
        if (phone.length() != 11) {
            ToastUtils.showToast(this, "手機(jī)號(hào)碼長(zhǎng)度不對(duì)");
            return;
        }
    }
    //正則匹配中國(guó)手機(jī)號(hào)碼
    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, "您輸入的手機(jī)號(hào)碼格式不正確");
        return;
    }
}

2、短信驗(yàn)證碼請(qǐng)求間隔一般要大于60秒(具體SDK不同),否則服務(wù)器會(huì)返回“請(qǐng)求過(guò)于頻繁”。因此我們自定義按鈕計(jì)時(shí)器:

public class CountTimerView extendsCountDownTimer {
    public static final int TIME_COUNT = 61000;//時(shí)間防止從59s開始顯示(以倒計(jì)時(shí)60s為例子)
    private TextView btn;
    private int endStrRid;
    /**
     * 參數(shù) millisInFuture      倒計(jì)時(shí)總時(shí)間(如60S,120s等)
     * 參數(shù) countDownInterval   漸變時(shí)間(每次倒計(jì)1s
     * 參數(shù) btn   點(diǎn)擊的按鈕(因?yàn)?/font>ButtonTextView子類,為了通用我的參數(shù)設(shè)置為TextView
     * 參數(shù) endStrRid   倒計(jì)時(shí)結(jié)束后,按鈕對(duì)應(yīng)顯示的文字
     */
    public CountTimerView(long millisInFuture, longcountDownInterval, TextView btn, int endStrRid) {
        super(millisInFuture, countDownInterval);
        this.btn = btn;
        this.endStrRid = endStrRid;
    }
    /**
     * 參數(shù)上面有注釋
     */
    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;
    }
    // 計(jì)時(shí)完畢時(shí)觸發(fā)
    @Override
    public void onFinish() {
        btn.setText(endStrRid);
        btn.setEnabled(true);
    }
    // 計(jì)時(shí)過(guò)程顯示
    @Override
    public void onTick(long millisUntilFinished) {
        btn.setEnabled(false);
        btn.setText(millisUntilFinished/ 1000 + " 秒后可重新發(fā)送");
    }
}



四、短信驗(yàn)證完整流程

1、用戶數(shù)據(jù)用戶名以及密碼

2、判斷用戶名以及密碼的合法性

3、調(diào)用短信SDK獲取驗(yàn)證碼的接口,獲取驗(yàn)證碼

4、用戶收到,輸入驗(yàn)證碼

5、獲取用戶輸入的驗(yàn)證碼,調(diào)用短信SDK驗(yàn)證碼驗(yàn)證的接口,進(jìn)行驗(yàn)證

6、驗(yàn)證通過(guò)以后,在回調(diào)中調(diào)用自己服務(wù)器的注冊(cè)API,進(jìn)行注冊(cè),注冊(cè)成功,銷毀本Activity,跳到主Activity


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表