Android使用MobSDK短信驗(yàn)證
短信注冊(cè)和短信驗(yàn)證已經(jīng)是家常便飯了,所以當(dāng)然要學(xué)習(xí)如何使用SDK啦
MobSDK可以免費(fèi)發(fā)短信,當(dāng)然就用它啦
http://www.mob.com
1.首先下載sdk
2.在項(xiàng)目新建一個(gè)叫l(wèi)ib的文件夾把4個(gè)東西放進(jìn)去
3.在app的build.gradule添加如下代碼
repositories{ flatDir{ dirs 'lib' //就是你放aar的目錄地址 } } dependencies { //....... //其他依賴包 compile name: 'SMSSDK-2.1.0', ext: 'aar' compile name: 'SMSSDKGUI-2.1.0', ext: 'aar' compile files('lib/MobCommons-2016.0624.1326.jar') compile files('lib/MobTools-2016.0624.1326.jar') }
4.在AndroidManifest.xml中添加權(quán)限和activity
<uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
在application下添加
<activity android:name="com.mob.tools.MobUIShell" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="keyboardHidden|orientation|screenSize" android:windowSoftInputMode="stateHidden|adjustResize"/>
5.開始使用
初始化SDK
SMSSDK.initSDK(this, "您的appkey", "您的appsecret");
發(fā)送驗(yàn)證碼
SMSSDK.getVerificationCode("86","您的手機(jī)號(hào)");
6.驗(yàn)證驗(yàn)證碼
收到驗(yàn)證碼后要post到Mob的服務(wù)器上驗(yàn)證
首先在到官網(wǎng)上開通服務(wù)端驗(yàn)證開關(guān)
請(qǐng)求地址為:https://webapi.sms.mob.com/sms/verify
請(qǐng)求方式: POST
請(qǐng)求參數(shù)
•appkey 應(yīng)用appkey
•phone 電話號(hào)碼
•zone 區(qū)號(hào)
•code 需要驗(yàn)證的驗(yàn)證碼
我已經(jīng)幫你寫好post的方法內(nèi)容,只需傳地址和參數(shù)就能返回結(jié)果
/** * 發(fā)起https請(qǐng)求 * @param address post地址 * @param params 參數(shù) * @return 結(jié)果 */ public static String requestData(String address ,String params){ HttpURLConnection conn = null; try { // Create a trust manager that does not validate certificate chains TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager(){ public X509Certificate[] getAcceptedIssuers(){return null;} public void checkClientTrusted(X509Certificate[] certs, String authType){} public void checkServerTrusted(X509Certificate[] certs, String authType){} }}; // Install the all-trusting trust manager SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, trustAllCerts, new SecureRandom()); //ip host verify HostnameVerifier hv = new HostnameVerifier() { public boolean verify(String urlHostName, SSLSession session) { return urlHostName.equals(session.getPeerHost()); } }; //set ip host verify HttpsURLConnection.setDefaultHostnameVerifier(hv); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); URL url = new URL(address); conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST");// POST conn.setConnectTimeout(3000); conn.setReadTimeout(3000); // set params ;post params if (params!=null) { conn.setDoOutput(true); DataOutputStream out = new DataOutputStream(conn.getOutputStream()); out.write(params.getBytes(Charset.forName("UTF-8"))); out.flush(); out.close(); } conn.connect(); //get result if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { InputStream in=conn.getInputStream(); StringBuffer out = new StringBuffer(); byte[] b = new byte[4096]; for (int n; (n = in.read(b)) != -1;) { out.append(new String(b, 0, n)); } return out.toString(); } else { System.out.println(conn.getResponseCode() + " "+ conn.getResponseMessage()); } } catch (Exception e) { e.printStackTrace(); } finally { if (conn != null) conn.disconnect(); } return null; }
既然是網(wǎng)絡(luò)請(qǐng)求當(dāng)然要新建線程使用啦
new Thread(new Runnable() { @Override public void run() { String params="appkey=您的appkey;phone=您的手機(jī)號(hào);zone=86;code=手機(jī)收到的驗(yàn)證碼"; String result = requestData("https://webapi.sms.mob.com/sms/verify", params); //輸出結(jié)果 System.out.println(result); } }).start();
輸出結(jié)果樣例{status:200}
結(jié)果編碼
返回值 結(jié)果描述
200 驗(yàn)證成功
405 AppKey為空
406 AppKey無效
456 國家代碼或手機(jī)號(hào)碼為空
457 手機(jī)號(hào)碼格式錯(cuò)誤
466 請(qǐng)求校驗(yàn)的驗(yàn)證碼為空
467 請(qǐng)求校驗(yàn)驗(yàn)證碼頻繁(5分鐘內(nèi)同一個(gè)appkey的同一個(gè)號(hào)碼最多只能校驗(yàn)三次)
468 驗(yàn)證碼錯(cuò)誤
474 沒有打開服務(wù)端驗(yàn)證開關(guān)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android通過繼承Binder類實(shí)現(xiàn)多進(jìn)程通信
本篇文章主要介紹了Android通過繼承Binder類實(shí)現(xiàn)多進(jìn)程通信,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03Android UI設(shè)計(jì)之AlertDialog彈窗控件
這篇文章主要為大家詳細(xì)介紹了Android UI設(shè)計(jì)之AlertDialog彈窗控件的使用方法,感興趣的小伙伴們可以參考一下2016-08-08詳解flutter如何實(shí)現(xiàn)局部導(dǎo)航管理
這篇文章主要為大家介紹了詳解flutter如何實(shí)現(xiàn)局部導(dǎo)航管理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01Android入門之讀寫本地文件的實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了Android如何實(shí)現(xiàn)讀寫本地文件的功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Android有一定的幫助,需要的可以參考一下2022-12-12解析:android 如何從JPEG生成BufferedImage
本篇文章是對(duì)在android中,如何從JPEG生成BufferedImage的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06Android自定義帶動(dòng)畫效果的圓形ProgressBar
這篇文章主要為大家詳細(xì)介紹了Android自定義帶動(dòng)畫效果的圓形ProgressBar,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05android中創(chuàng)建通知欄Notification代碼實(shí)例
這篇文章主要介紹了android中創(chuàng)建通知欄Notification代碼實(shí)例,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-05-05android實(shí)現(xiàn)圖片閃爍動(dòng)畫效果的兩種實(shí)現(xiàn)方式(實(shí)用性高)
本文通過兩種方法給大家講解了android實(shí)現(xiàn)圖片閃爍動(dòng)畫效果,實(shí)用性非常高,對(duì)這兩種方法感興趣的朋友一起通過本文學(xué)習(xí)吧2016-09-09Android實(shí)現(xiàn)3種側(cè)滑效果(仿qq側(cè)滑、抽屜側(cè)滑、普通側(cè)滑)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)多種側(cè)滑效果,包括仿qq側(cè)滑,抽屜側(cè)滑,普通側(cè)滑三種效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04