集成短信验证码--Mob.com
集成短信验证码–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相关推荐
- Spring Security OAuth2 优雅的集成短信验证码登录以及第三方登录
基于SpringCloud做微服务架构分布式系统时,OAuth2.0作为认证的业内标准,Spring Security OAuth2也提供了全套的解决方案来支持在Spring Cloud/Spring ...
- iOS开发——App集成短信验证码
无论是在网页上还是在客户端,每当我们进行注册的时候,往往会进行短信或者邮箱验证,这是一种不错的安全机制.对于用户体验来说,如果是在PC的网页上,用邮箱或者短信验证都比较方便:如果是在手机上,那么使用短 ...
- mob sdk vue 短信验证_如何快速集成短信验证码API[图文教程]
基础知识 以SUBMAIL为例,在进行以下步骤前,请先完成您的账户配置并认证. 步骤一.前往->开发者 ->SDK开发包下载页面,下载对应语言的SDK开发包. SUBMAIL 提供多达9种 ...
- android_app开发集成mob短信验证码功能
一.前言 现在的app基本上都需要用到短信功能,注册时或者有消息通知时需要给用户发送一条短信,但是对于个人开发者来说,去买第三方的短信服务实在是有点奢侈,很好的是mob为我们提供了免费的短信验证码服务 ...
- 5.Spring Security 短信验证码登录
Spring Security 短信验证码登录 在 Spring Security 添加图形验证码一节中,我们已经实现了基于 Spring Boot + Spring Security 的账号密码登录 ...
- android短信验证码方案,Android之短信验证码
今天所使用的方案只是android手机设备集成短信验证码功能的方案之一. 我们所采用的方案是使用聚合数据的短信验证sdk. 接口文档:https://www.juhe.cn/docs/api/... ...
- Android之短信验证码
我们今天所使用的方案只是android手机设备集成短信验证码功能的方案之一. 我们所采用的方案是使用聚合数据的短信验证sdk. 程序的界面如下所示: 实现步骤: 1.到聚合数据官网上申请短信验证SDK ...
- Spring Security 短信验证码登录(5)
在Spring Security添加图形验证码中,我们已经实现了基于Spring Boot + Spring Security的账号密码登录,并集成了图形验证码功能.时下另一种非常常见的网站登录方式为 ...
- Android 集成Mob实现手机短信验证码
项目中集成MOB.com提供的三方短信SDK. 当然这些短信都是免费的.并且可以在您申请的MOB.com后台去查看短信注册用户的相关信息. 这篇文后半部分会提供一个简单的验证短信Demo,有界面,当然 ...
最新文章
- oracle 查询数据横向,Oracle 查询存储过程做横向报表的方法
- linux 内核调试方法
- Hibernate n+1问题
- 新唐M031学习笔记(一)定时器基础计数应用
- Machine Learning(Stanford)| 斯坦福大学机(吴恩达)器学习笔记【汇总】
- 彻底理解 Cookie、Session、Token
- 能量采集(HYSBZ-2005)
- 伪静态设置php,php伪静态设置
- ANSI是什么编码?
- android 去广告浏览器,Adblock Browser(去广告浏览器) V1.3.1 安卓版
- 面向对象的程序设计-地铁路线计算程序的设计、优化与测试
- fedora 14 root登陆修改方法
- MATLAB-Control System Toolbox™0.控制系统工具箱说明
- 【iOS-Cocos2d游戏开发之十八】解决滚屏背景/拼接地图有黑边(缝隙)以及禁止游戏中自动锁屏问题!
- 甘特图在Vue中的应用篇
- leetcode 1175. Prime Arrangements 解法 python
- linux系统FW升降级步骤,使用fwupd为Ubuntu 18.04系统更新固件的方法
- ETSI开源MANO发布首个版本
- 博弈论笔记--06--纳什均衡之约会游戏与古诺模型
- 第1章 HTML第2章 CSS-JS
热门文章
- 非极大值抑制(nonMaximumSuppression)
- 文言文编程惊艳入世,程序员们有多天马行空?
- django html5 柱状图,python + Element 展示柱状图
- 像写 Markdown 一样画流程图
- STM32 定时器 周期 频率 时间 计算
- windows7解决目标文件夹访问被拒绝(解决Sublime启动时报错,无法启动)
- CSS 3.0实现立体卡片特效
- HuggingFace (transformers) 自定义图像数据集、使用 DeiT 模型、Trainer 进行训练回归任务
- java修复sql注入问题常用方法
- Byte[]与UIntptr 转Intptr