Android 에서 MobSDK 문자 인증 사용

문자 등록 과 문자 검증 은 이미 다반사 이기 때문에 당연히 SDK 를 어떻게 사용 하 는 지 배 워 야 한다.
MobSDK 는 무료 로 문 자 를 보 낼 수 있 으 니 당연히 그것 을 써 야 한다.
http://www.mob.com
1.먼저 sdk 다운로드
2.프로젝트 에 lib 라 는 폴 더 를 새로 만 들 고 네 개의 물건 을 넣 습 니 다.

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" />

애플 리 케 이 션 에 추가

<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,"당신 의 app key","당신 의 app secret");
인증번호 보 내기
SMSSDK.getVerificationCode("86","당신 의 핸드폰 번호");
6.인증 코드
인증 코드 를 받 은 후 Mob 서버 에 post 하여 인증 해 야 합 니 다.
우선 홈 페이지 에 서버 인증 스위치 를 개통 합 니 다.

요청 주소:https://webapi.sms.mob.com/sms/verify
요청 방식:POST
요청 매개 변수
 •appkey 응용 appkey
 •전화번호
 •zone 지역 번호
 •코드 검증 이 필요 한 인증 코드
나 는 이미 너 를 도와 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 서버 인증 스위치 를 열지 않 았 습 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기