涉及到用戶注冊的App經常會涉及到短信驗證碼,但是對於獨立開發者來說,不可能因為幾百幾千個用戶就去購買上千成本的短信驗證碼服務,因此,實現免費驗證碼便是開發中很重要的一個訣竅。
可能很多用戶都已經知道Mob這個網站了,他們提供了著名的ShareSDK,還有手游錄像等工具,當然也提供了本文的主角,Mob免費短信sdk。
天下沒有“完美的免費午餐”,因此,Mob提供的所為免費驗證碼,一定是有限制的,那麼限制是什麼呢?
限制主要體現在:無法自定義短信內容、無法獲知驗證碼具體數值。
第一點,具體為Mob的短信內容固定為:[App名字]的驗證碼為:1234 【掌淘科技】
掌淘科技估計為Mob提供這個服務所用的公司,其實這一點對於我們獨立開發者來說也不是很頭疼,用戶大多數情況下根本不會在意驗證碼裡面的其他提示語,只會在乎高亮的數字。
但是第二點很致命,Mob的sdk是客戶端sdk,也就是給ios和安卓調用,但是,只提供了一個發送方法:發送驗證碼(手機號) 。也就是說,具體到底發送給用戶的是什麼數字,我們無從知曉。我們要驗證驗證碼只能用Mob提供的方法:驗證(手機號,用戶輸入的驗證碼) 得到true或者false的結果。
想象一下以下情況:用戶找回密碼,輸入手機號,獲取驗證碼,然後輸入驗證碼,程序用Mob的接口進行驗證,驗證成功,然後進行重新設置密碼。這裡出現了一些問題,重新設置密碼這個接口沒有進行安全檢驗,我們希望這個後台api接口能檢驗一下驗證碼,然後再確保請求的用戶是該賬戶的主人,進行設置密碼。但是後台api無從獲取驗證碼,客戶端也無從獲取,唯一獲取驗證碼的途徑是:用戶的輸入。
因此要解決這個問題,後來我采取了如下解決方案。
整個的驗證碼流程變成如下:
1.用戶輸入手機號並點擊發送驗證碼
2.客戶端調用sdk接口發送驗證碼
3.用戶輸入驗證碼點擊驗證
4.客戶端將用戶的手機號和輸入的驗證碼傳遞給自己的服務器api接口
5.api再將手機號和驗證碼post給mob提供的接口,如果驗證成功,則將驗證碼記錄到數據庫
6.客戶端再將驗證碼傳遞給密碼修改、用戶注冊接口,這時候服務器就可以根據數據庫裡記錄的驗證碼進行驗證對比了
可能有些朋友沒聽懂我在說什麼吧,總結一下就是,Mob沒有讓我們知道驗證碼具體內容,但是我們有時候需要知道這個驗證碼,以上步驟就解決了我們無法獲取驗證碼的問題。
至此,我們就可以利用Mob的短信驗證碼sdk完成小規模的短信驗證碼功能了。按照我實際的體驗來看,Mob還算比較穩定,95%能夠發送到達,畢竟免費。
以上僅僅是個人經驗,如果你的App用戶較大,追求100%的穩定,還是要去購買正規短信驗證碼一勞永逸哦!
作者:不滅的小燈燈