Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android使用MobSDK短信驗證

Android使用MobSDK短信驗證

編輯:關於Android編程

短信注冊和短信驗證已經是家常便飯了,所以當然要學習如何使用SDK啦
MobSDK可以免費發短信,當然就用它啦
http://www.mob.com

1.首先下載sdk

2.在項目新建一個叫lib的文件夾把4個東西放進去

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中添加權限和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");

發送驗證碼

SMSSDK.getVerificationCode("86","您的手機號");

6.驗證驗證碼

收到驗證碼後要post到Mob的服務器上驗證
首先在到官網上開通服務端驗證開關

請求地址為:https://webapi.sms.mob.com/sms/verify

請求方式: POST

請求參數
 •appkey 應用appkey
 •phone 電話號碼
 •zone 區號
 •code 需要驗證的驗證碼

我已經幫你寫好post的方法內容,只需傳地址和參數就能返回結果

 /**
   * 發起https請求
   * @param address  post地址
   * @param params  參數
   * @return 結果
   */
  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;
  }

既然是網絡請求當然要新建線程使用啦

 new Thread(new Runnable() {
          @Override
          public void run() {
            String params="appkey=您的appkey;phone=您的手機號;zone=86;code=手機收到的驗證碼";
            String result = requestData("https://webapi.sms.mob.com/sms/verify",
                params);
            //輸出結果
            System.out.println(result);
          }
        }).start();

輸出結果樣例{status:200}
 結果編碼

返回值 結果描述
200 驗證成功
405 AppKey為空
406 AppKey無效
456 國家代碼或手機號碼為空
457 手機號碼格式錯誤
466 請求校驗的驗證碼為空
467 請求校驗驗證碼頻繁(5分鐘內同一個appkey的同一個號碼最多只能校驗三次)
468 驗證碼錯誤
474 沒有打開服務端驗證開關

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持本站。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved