发送手机验证码

遇到困难:并没有找到在客户端直接发送验证码到邮箱的代码

  解决困难:之前没有找到免费发送手机验证码的接口,所以打算用邮箱发送验证码,后来有个同学告诉我用mod可以免费发送短信,于是改成发送短信验证码。
          步骤:
          1. 第一步当然是注册账号
          2. 点击 进入后台→选择 SecurityCodeSDK→点击 立即使用→选择应用的平台→获取App key和App Secret
          3. 下载sdk,解压后是这样的:

4. 之后安装官网导入sdk[官网链接]http://wiki.mob.com/android-%E7%9F%AD%E4%BF%A1sdk%E9%9B%86%E6%88%90%E6%96%87%E6%A1%A3/
       5. 配置好后,添加权限
       6. 我这里是自定义界面,当然也可以使用系统自带界面。代码调用:

//初始化SMSSDK
    private void initSDK()
    {
        SMSSDK.initSDK(forgetPassword.this, "18e3768f516a3", "e05f202526cd41dcf17d2498d6a7aeeb");
        EventHandler eventHandler = new EventHandler() {
            @Override
            public void afterEvent(int event, int result, Object data) {
                Message msg = new Message();
                msg.arg1 = event;
                msg.arg2 = result;
                msg.obj = data;
                msg.what = SMSDDK_HANDLER;
                handler.sendMessage(msg);
            }
        };
        // 注册回调监听接口
        SMSSDK.registerEventHandler(eventHandler);
    }

初始化sdk

 1  getNumber.setOnClickListener(new View.OnClickListener() {
 2             @Override
 3             public void onClick(View v) {
 4                 userPhone = phoneNumber.getText().toString();
 5                 new AlertDialog.Builder(forgetPassword.this)
 6                         .setTitle("发送短信")
 7                         .setMessage("我们将把验证码发送到以下号码:\n" + "+86:" + userPhone)
 8                         .setPositiveButton("确定", new DialogInterface.OnClickListener() {
 9                             @Override
10                             public void onClick(DialogInterface dialog, int which) {
11                                 SMSSDK.getVerificationCode("86", userPhone);
12                                 getNumber.setClickable(false);
13                                 new Thread(new Runnable() {
14                                     @Override
15                                     public void run() {
16                                         for (int i = 60; i > 0; i--) {
17                                             handler.sendEmptyMessage(CODE_ING);
18                                             if (i <= 0) {
19                                                 break;
20                                             }
21                                             try {
22                                                 Thread.sleep(1000);
23                                             } catch (InterruptedException e) {
24                                                 e.printStackTrace();
25                                             }
26                                         }
27                                         handler.sendEmptyMessage(CODE_REPEAT);
28                                     }
29                                 }).start();
30                             }
31                         })
32                         .create()
33                         .show();
34             }
35         });

点击发送验证码

  check.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SMSSDK.submitVerificationCode("86", userPhone, checkNunber.getText().toString());//对验证码进行验证->回调函数
            }
        });

验证 验证码

Handler handler = new Handler()
    {
        public void handleMessage(Message msg)
        {
            switch (msg.what)
            {
                case CODE_ING://已发送,倒计时
                    getNumber.setText("重新发送(" + --TIME + "s)");
                    break;
                case CODE_REPEAT://重新发送
                    getNumber.setText("获取验证码");
                    getNumber.setClickable(true);
                    break;
                case SMSDDK_HANDLER:
                    int event = msg.arg1;
                    int result = msg.arg2;
                    Object data = msg.obj;
                    //回调完成
                    if (result == SMSSDK.RESULT_COMPLETE)
                    {
                        //验证码验证成功
                        if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE)
                        {
                            Toast.makeText(forgetPassword.this, "验证成功", Toast.LENGTH_LONG).show();
                        }
                        //已发送验证码
                        else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE)
                        {
                            Toast.makeText(getApplicationContext(), "验证码已经发送",
                                    Toast.LENGTH_SHORT).show();
                        } else
                        {
                            ((Throwable) data).printStackTrace();
                        }
                    }
                    if(result==SMSSDK.RESULT_ERROR)
                    {
                        try {
                            Throwable throwable = (Throwable) data;
                            throwable.printStackTrace();
                            JSONObject object = new JSONObject(throwable.getMessage());
                            String des = object.optString("detail");//错误描述
                            int status = object.optInt("status");//错误代码
                            if (status > 0 && !TextUtils.isEmpty(des)) {
                                Toast.makeText(getApplicationContext(), des, Toast.LENGTH_SHORT).show();
                                return;
                            }
                        } catch (Exception e) {
                            //do something
                        }
                    }
                    break;
            }
        }
    };

回调函数

 

时间: 2024-12-20 10:15:47

发送手机验证码的相关文章

使用“互亿无线”短信验证码接口来实现发送手机验证码功能

今天 突然发神经想到要做一个发送手机验证码的功能,因为看到很多用户注册这个模块都有手机验证这个功能,于是乎,俺就上网查了很多资料,整理了一下,做了一个简单的手机验证码实现功能.不过我用的是试用账号,只可以发送30个短信,如果要更多的话,需要充值,这是我感到很遗憾的事情.下面跟着我来实现这个功能吧,大神勿喷哈. 1.首先,上互亿无线注册一个账号,http://www.ihuyi.com/,注册后你可以看到你的账号参数信息: 2.使用VS创建一个空的Web应用程序: 注册静态页面:index.htm

利用线程创建发送手机验证码的工具类

1.生成验证码类 package com.util; import java.util.Timer; import java.util.TimerTask; /** * @description 手机发送验证码工具类 */ public class MessageCode extends TimerTask{ private Timer timer; /** * @description 短信验证码的内容 */ private String messageCode; /** * @descrip

layui发送手机验证码

<!DOCTYPE html> <html> <head>     <meta charset="utf-8">     <title>登入</title>     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">     <meta n

C# WinForm 使用SMS接口发送手机验证码+图形验证码+IP限制

https://blog.csdn.net/IT_xiao_guang_guang/article/details/104299983 前言 ??1.发送手机验证码用的是网建的SMS接口(http://sms.webchinese.cn/) ??2.手机验证码简单的做了以下限制: ????①发送验证码1分钟只能点击发送1次 ????②相同IP手机号码1天最多提交20次(这里我用的是本地局域网IP) ????③加入图形验证码 ??注:SMS官网上的建议还有要对手机号码次数进行限制:单个手机号码30

用Java redis 实现发送手机验证码的功能

要求: 1.输入手机号,点击发送后随机生成6位数字码,2分钟有效 2.输入验证码,点击验证,返回成功或失败 3.每个手机号每天只能输入3次 import redis.clients.jedis.Jedis; import java.util.Random; public class ValidationTest { public static void main(String[] args) { //getValidation("15005076571"); //checkValida

[.NET开发] C#实现发送手机验证码功能

之前不怎么了解这个,一直以为做起来很复杂. 直到前两天公司要求要做这个功能. 做了之后才发现 这不过就是一个POST请求就能实现的东西.现在给大家分享一下,有不足之处还请多多指教. 废话不多说 直接上代码. 1.先获取一个随机数字验证码(这里是6位数),然后编辑好需要发送的内容. 这里还做了个手机号码合法性的验证. public string VerificationCode(string mobile) { if (IsHandset(mobile)) { string code = new

jquery 实现 点击按钮后倒计时效果,多用于实现发送手机验证码

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <title></title&

.NET使用HttpWebRequest发送手机验证码

namespace SendSMS { class Program { static void Main(string[] args) { string phone = "13770504xxxx"; string sign = string.Format("[]您的验证码为{0},此验证码有效时间为10分钟", "1234"); bool result = SendMsg(phone,sign); } public static bool Se

Java实现发送手机验证码功能

进入秒嘀科技(https://sms.miaodiyun.com/),注册一个账号. 登录账号 进行企业认证,营业执照去网上搜一个,有时候可能识别不出来,多换几张,清晰的,还在运营中的就行,证件号码就是注册号,最后点击提交. 进行新建你发送短信的模板 添加完成之后要等待审核,不通过的话记得一定要看规范,之后进行短信配置,这里边的ip要的是在河南省的,所以你可以去这里找你的ip 获取ACCOUNT SID还有AUTH TOKEN 下载demo,导入项目,进行修改代码,之后就OK了 原文地址:htt