Android使用MobSDK短信驗(yàn)證
短信注冊和短信驗(yàn)證已經(jīng)是家常便飯了,所以當(dāng)然要學(xué)習(xí)如何使用SDK啦
MobSDK可以免費(fèi)發(fā)短信,當(dāng)然就用它啦
http://www.mob.com
1.首先下載sdk
2.在項(xiàng)目新建一個叫l(wèi)ib的文件夾把4個東西放進(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ī)號");
6.驗(yàn)證驗(yàn)證碼
收到驗(yàn)證碼后要post到Mob的服務(wù)器上驗(yàn)證
首先在到官網(wǎng)上開通服務(wù)端驗(yàn)證開關(guān)

請求地址為:https://webapi.sms.mob.com/sms/verify
請求方式: POST
請求參數(shù)
•appkey 應(yīng)用appkey
•phone 電話號碼
•zone 區(qū)號
•code 需要驗(yàn)證的驗(yàn)證碼
我已經(jīng)幫你寫好post的方法內(nèi)容,只需傳地址和參數(shù)就能返回結(jié)果
/**
* 發(fā)起https請求
* @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ò)請求當(dāng)然要新建線程使用啦
new Thread(new Runnable() {
@Override
public void run() {
String params="appkey=您的appkey;phone=您的手機(jī)號;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ī)號碼為空
457 手機(jī)號碼格式錯誤
466 請求校驗(yàn)的驗(yàn)證碼為空
467 請求校驗(yàn)驗(yàn)證碼頻繁(5分鐘內(nèi)同一個appkey的同一個號碼最多只能校驗(yàn)三次)
468 驗(yàn)證碼錯誤
474 沒有打開服務(wù)端驗(yàn)證開關(guān)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android開發(fā)技巧之ViewStub控件惰性裝載
布局文件中的控件并不一定在程序啟動時全都用到,有一些控件只在特定的情況下才會被使用到;我們急需一種機(jī)制來改變<include>標(biāo)簽的這種行為,只在需要時裝載控件。這種機(jī)制就是本節(jié)要介紹的ViewStub控件2013-01-01
一文帶你搞清楚Android游戲發(fā)行切包資源ID那點(diǎn)事
這篇文章主要介紹了Android 解決游戲發(fā)行切包資源ID的一些問題,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下2023-05-05
Android中通過樣式來去除app的頭及界面全屏(備忘)的實(shí)現(xiàn)方法
這篇文章主要介紹了Android中通過樣式來去除app的頭及界面全屏(備忘)的相關(guān)資料,需要的朋友可以參考下2016-12-12
Android個人中心的頭像上傳,圖片編碼及截取實(shí)例
本篇文章主要介紹了Android個人中心的頭像上傳,圖片編碼及截取實(shí)例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2016-12-12
Android SurfaceView運(yùn)行機(jī)制剖析--處理切換到后臺再重新進(jìn)入程序時的異常
本文主要介紹Android SurfaceView運(yùn)行機(jī)制,這里整理了詳細(xì)的資料來講解SurfaceView的運(yùn)行原理,并附示例代碼參考,有需要的小伙伴可以參考下2016-08-08
Android 指紋識別詳解及實(shí)現(xiàn)方法
本文主要介紹Android 指紋識別的知識,這里整理了詳細(xì)的資料和簡單實(shí)現(xiàn)代碼,有開發(fā)這部分的朋友可以參考下2016-09-09

