集成短信验证码–Mob.com

ONE Goal,ONE Passion !


现在大多数app 在注册时会使用手机号直接注册,这样到挺方便的.不过对开发者来说就要去集成一些短信验证的sdk了.用的比较多的当属mob.com网址的api.

第1步: 登录网站注册开发者

http://dashboard.mob.com/#/main/index 注册用户,注册了用户后才能创建应用.


第2步: 创建应用得到App key, App Secret

如图:

点击添加后会生成app key,以及app secret.
注意: 应用名一定要和工程应用名一致.


第3步: 在自己工程中做集成

新建一个项目,项目名要和申请key时的名一致.开始集成:
我们的项目一般不要求有gui;只需将SMSSDK下的libs底下的文件移到你要使用的项目的相应位置即可。下载官方sdk.
如图:

如果在编译时提示ndkassembleerror之类的错误,请尝试在local.property里添加你的ndk路径

第4步:java代码实例化

a.在使用的时候去实例化,并且注册事件.

public class MainActivity extends Activity implements View.OnClickListener {private Button sensmsButton, verificationButton, countryButton;private TextView countryTextView, textView2;private EditText phonEditText, verEditText;// 填写从短信SDK应用后台注册得到的APPKEYprivate static String APPKEY = "dfa83789889c";// 填写从短信SDK应用后台注册得到的APPSECRETprivate static String APPSECRET = "cccb7ff4168648e6bb9455d00bb8d54e";public String phString; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sensmsButton = (Button) findViewById(R.id.button1);verificationButton = (Button) findViewById(R.id.button2);countryButton = (Button) findViewById(R.id.button3);countryTextView = (TextView) findViewById(R.id.textView1);textView2 = (TextView) findViewById(R.id.textView2);phonEditText = (EditText) findViewById(R.id.editText1);verEditText = (EditText) findViewById(R.id.editText2);sensmsButton.setOnClickListener(this);verificationButton.setOnClickListener(this);countryButton.setOnClickListener(this);SMSSDK.initSDK(this, APPKEY, APPSECRET);EventHandler eh = new EventHandler() {@Overridepublic void afterEvent(int event, int result, Object data) {Message msg = new Message();msg.arg1 = event;msg.arg2 = result;msg.obj = data;System.out.println("result-----" + result);System.out.println("data-----" + data);handler.sendMessage(msg);}};SMSSDK.registerEventHandler(eh);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.button1:// 获取验证码if (!TextUtils.isEmpty(phonEditText.getText().toString())) {SMSSDK.getVerificationCode("86", phonEditText.getText().toString());phString = phonEditText.getText().toString();} else {Toast.makeText(this, "电话不能为空", Toast.LENGTH_SHORT).show();}break;case R.id.button2:// 校验验证码if (!TextUtils.isEmpty(verEditText.getText().toString())) {SMSSDK.submitVerificationCode("86", phString, verEditText.getText().toString());} else {Toast.makeText(this, "验证码不能为空", Toast.LENGTH_SHORT).show();}break;case R.id.button3:// 国家列表SMSSDK.getSupportedCountries();// SMSSDK.getCountry(arg0);SMSSDK.getGroupedCountryList();// SMSSDK.getCountryByMCC(arg0);break;default:break;}}Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubsuper.handleMessage(msg);int event = msg.arg1;int result = msg.arg2;Object data = msg.obj;Log.e("event", "event=" + event);if (result == SMSSDK.RESULT_COMPLETE) {// 短信注册成功后,返回MainActivity,然后提示新好友if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {// 提交验证码成功Toast.makeText(getApplicationContext(), "提交验证码成功",Toast.LENGTH_SHORT).show();textView2.setText("提交验证码成功");} else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {Toast.makeText(getApplicationContext(), "验证码已经发送",Toast.LENGTH_SHORT).show();textView2.setText("验证码已经发送");} else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {// 返回支持发送验证码的国家列表Toast.makeText(getApplicationContext(), "获取国家列表成功",Toast.LENGTH_SHORT).show();countryTextView.setText(data.toString());}} else {((Throwable) data).printStackTrace();int resId = getStringRes(MainActivity.this,"smssdk_network_error");Toast.makeText(MainActivity.this, "验证码错误", Toast.LENGTH_SHORT).show();if (resId > 0) {Toast.makeText(MainActivity.this, resId, Toast.LENGTH_SHORT).show();}}}};@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();SMSSDK.unregisterAllEventHandler();}}

b. 官方demo提供的xml.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity"><EditText
        android:id="@+id/editText1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"android:ems="10"android:hint="手机号"android:inputType="number"><requestFocus /></EditText><Button
        android:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignTop="@+id/editText1"android:layout_toRightOf="@+id/editText1"android:text="获取验证码" /><EditText
        android:id="@+id/editText2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/editText1"android:layout_below="@+id/button1"android:ems="10"android:hint="验证码"android:inputType="number" /><Button
        android:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/editText2"android:layout_below="@+id/editText2"android:text="验证" /><Button
        android:id="@+id/button3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/button2"android:layout_centerVertical="true"android:text="获取支持的国家列表" /><TextView
        android:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/button3"android:layout_below="@+id/button3" /><TextView
        android:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignRight="@+id/button2"android:layout_below="@+id/button2"android:layout_marginTop="25dp"android:text="TextView" /></RelativeLayout>

第5步: 添加权限

<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.GET_TASKS" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

这样就完成了集成如图点击输入手机号即可收到验证码:


输入验证码就可以进行验证了.

完整demo地址:
http://download.csdn.net/my

错误码参考

SMSSDK for Android API回调中,当result=SMSSDK.RESULT_ERROR,则data的类型为Throwable;如果这个Throwable的message就存放有json数据,你可以从中读取status的错误码信息。一部分是服务器返回的。还有一部分是SDK本地生成的。
服务器错误码:

错误码 描述 说明
400 无效请求 客户端请求不能被识别。
405 AppKey为空 请求的AppKey为空。
406 AppKey错误 请求的AppKey不存在。
407 缺少数据 请求提交的数据缺少必要的数据。
408 无效的参数 无效的请求参数。
418 内部接口调用失败 内部接口调用失败。
450 权限不足 无权执行该操作。
454 数据格式错误 请求传递的数据格式错误,服务器无法转换为JSON格式的数据。
455 签名无效 签名检验。
456 手机号码为空 提交的手机号码或者区号为空。
457 手机号码格式错误 提交的手机号格式不正确(包括手机的区号)。
458 手机号码在黑名单中 手机号码在发送黑名单中。
459 无appKey的控制数据 获取appKey控制发送短信的数据失败。
460 无权限发送短信 没有打开客户端发送短信的开关。
461 不支持该地区发送短信 没有开通给当前地区发送短信的功能。
462 每分钟发送次数超限 每分钟发送短信的数量超过限制。
463 手机号码每天发送次数超限 手机号码在当前APP内每天发送短信的次数超出限制。
464 每台手机每天发送次数超限 每台手机每天发送短信的次数超限。
465 号码在App中每天发送短信的次数超限 手机号码在APP中每天发送短信的数量超限。
466 校验的验证码为空 提交的校验验证码为空。
467 校验验证码请求频繁 5分钟内校验错误超过3次,验证码失效。
468 需要校验的验证码错误 用户提交校验的验证码错误。
469 未开启web发送短信 没有打开通过网页端发送短信的开关。
470 账户余额不足 账户的短信余额不足。
471 请求IP错误 通过服务端发送或验证短信的IP错误
472 客户端请求发送短信验证过于频繁 客户端请求发送短信验证过于频繁
473 服务端根据duid获取平台错误 服务端根据duid获取平台错误
474 没有打开服务端验证开关 没有打开服务端验证开关
475 appKey的应用信息不存在 appKey的应用信息不存在
476 当前appkey发送短信的数量超过限额 如果当前appkey对应的包名没有通过审核,每天次appkey+包名最多可以发送20条短信
477 当前手机号发送短信的数量超过限额 当前手机号码在SMSSDK平台内每天最多可发送短信10条,包括客户端发送和WebApi发送
478 当前手机号在当前应用内发送超过限额 当前手机号码在当前应用下 12小时内最多可发送文本验证码5条
500 服务器内部错误 服务端程序报错。

本地错误码:

错误码 描述 说明
600 API使用受限制 API使用受限制
601 短信发送受限 短信发送受限
602 无法发送此地区短信 无法发送此地区短信
603 请填写正确的手机号码 请填写正确的手机号码
604 当前服务暂不支持此国家 当前服务暂不支持此国家,请选择其它国家

集成短信验证码--Mob.com相关推荐

  1. Spring Security OAuth2 优雅的集成短信验证码登录以及第三方登录

    基于SpringCloud做微服务架构分布式系统时,OAuth2.0作为认证的业内标准,Spring Security OAuth2也提供了全套的解决方案来支持在Spring Cloud/Spring ...

  2. iOS开发——App集成短信验证码

    无论是在网页上还是在客户端,每当我们进行注册的时候,往往会进行短信或者邮箱验证,这是一种不错的安全机制.对于用户体验来说,如果是在PC的网页上,用邮箱或者短信验证都比较方便:如果是在手机上,那么使用短 ...

  3. mob sdk vue 短信验证_如何快速集成短信验证码API[图文教程]

    基础知识 以SUBMAIL为例,在进行以下步骤前,请先完成您的账户配置并认证. 步骤一.前往->开发者 ->SDK开发包下载页面,下载对应语言的SDK开发包. SUBMAIL 提供多达9种 ...

  4. android_app开发集成mob短信验证码功能

    一.前言 现在的app基本上都需要用到短信功能,注册时或者有消息通知时需要给用户发送一条短信,但是对于个人开发者来说,去买第三方的短信服务实在是有点奢侈,很好的是mob为我们提供了免费的短信验证码服务 ...

  5. 5.Spring Security 短信验证码登录

    Spring Security 短信验证码登录 在 Spring Security 添加图形验证码一节中,我们已经实现了基于 Spring Boot + Spring Security 的账号密码登录 ...

  6. android短信验证码方案,Android之短信验证码

    今天所使用的方案只是android手机设备集成短信验证码功能的方案之一. 我们所采用的方案是使用聚合数据的短信验证sdk. 接口文档:https://www.juhe.cn/docs/api/... ...

  7. Android之短信验证码

    我们今天所使用的方案只是android手机设备集成短信验证码功能的方案之一. 我们所采用的方案是使用聚合数据的短信验证sdk. 程序的界面如下所示: 实现步骤: 1.到聚合数据官网上申请短信验证SDK ...

  8. Spring Security 短信验证码登录(5)

    在Spring Security添加图形验证码中,我们已经实现了基于Spring Boot + Spring Security的账号密码登录,并集成了图形验证码功能.时下另一种非常常见的网站登录方式为 ...

  9. Android 集成Mob实现手机短信验证码

    项目中集成MOB.com提供的三方短信SDK. 当然这些短信都是免费的.并且可以在您申请的MOB.com后台去查看短信注册用户的相关信息. 这篇文后半部分会提供一个简单的验证短信Demo,有界面,当然 ...

最新文章

  1. oracle 查询数据横向,Oracle 查询存储过程做横向报表的方法
  2. linux 内核调试方法
  3. Hibernate n+1问题
  4. 新唐M031学习笔记(一)定时器基础计数应用
  5. Machine Learning(Stanford)| 斯坦福大学机(吴恩达)器学习笔记【汇总】
  6. 彻底理解 Cookie、Session、Token
  7. 能量采集(HYSBZ-2005)
  8. 伪静态设置php,php伪静态设置
  9. ANSI是什么编码?
  10. android 去广告浏览器,Adblock Browser(去广告浏览器) V1.3.1 安卓版
  11. 面向对象的程序设计-地铁路线计算程序的设计、优化与测试
  12. fedora 14 root登陆修改方法
  13. MATLAB-Control System Toolbox™0.控制系统工具箱说明
  14. 【iOS-Cocos2d游戏开发之十八】解决滚屏背景/拼接地图有黑边(缝隙)以及禁止游戏中自动锁屏问题!
  15. 甘特图在Vue中的应用篇
  16. leetcode 1175. Prime Arrangements 解法 python
  17. linux系统FW升降级步骤,使用fwupd为Ubuntu 18.04系统更新固件的方法
  18. ETSI开源MANO发布首个版本
  19. 博弈论笔记--06--纳什均衡之约会游戏与古诺模型
  20. 第1章 HTML第2章 CSS-JS

热门文章

  1. 非极大值抑制(nonMaximumSuppression)
  2. 文言文编程惊艳入世,程序员们有多天马行空?
  3. django html5 柱状图,python + Element 展示柱状图
  4. 像写 Markdown 一样画流程图
  5. STM32 定时器 周期 频率 时间 计算
  6. windows7解决目标文件夹访问被拒绝(解决Sublime启动时报错,无法启动)
  7. CSS 3.0实现立体卡片特效
  8. HuggingFace (transformers) 自定义图像数据集、使用 DeiT 模型、Trainer 进行训练回归任务
  9. java修复sql注入问题常用方法
  10. Byte[]与UIntptr 转Intptr