获取短信验证码并实现登录

其实短信验证很简单  下面我把过程简单的写一下,希望对大家有帮助



首先我是这样一个界面




xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
    tools:context="xi.myapplication.MainActivity">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:background="@null"
        android:orientation="horizontal">
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@mipmap/ic_launcher" />
        <EditText
            android:id="@+id/ed"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="请输入您的手机号" />
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="40dp"
            android:background="#ffff37"
            android:text="获取验证码" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="130dp"
        android:layout_marginTop="20dp"
        android:background="@null"
        android:orientation="horizontal">
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@mipmap/ic_launcher" />
        <EditText
            android:id="@+id/ed1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入收到的验证码" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:layout_height="wrap_content">
        <Button
            android:id="@+id/bts"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="5"
            android:text="提交" />
    </LinearLayout>

</LinearLayout>

其次呢,我们需要去mob官网下载SDK:http://www.mob.com/#/

选择android的SDK下载




这里有两个选择,看自己用什么开发平台了,选择自己需要的

这里我讲as的例子:

下载好之后我们返回找到自己登陆的头像选择进入后台


进入之后选这个



进去之后会给你一个APPkey 和  APPsecret   在下面会有这样一个东西


如果你是上线应用的话   需要选择第二个  进去设置一些东西,我这里直接选第一个,里面是一些相应的教程,

首先我以AS为例,把下载好的SDK中的四个jar包导入你的项目中然后打开这个东西


dependencies {
    ....//你的其他依赖
    compile name:'SMSSDK-<version>',ext:'aar'
    compile name:'SMSSDKGUI-<version>',ext:'aar'
}

这个的意思就是把你导入的jar包 


这两个直接依赖


这两个直接把上面的dependencies中的版本<version>改成2.1.1,不要尖括号;


这样的话我们就基本配置好了


然后就是需要一些代码来完成我们所需要的功能

在AndroidManifest.xml中  复制这些代码

<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"/>
然后就是activity中代码如下:  首先我们进入这个看一下他的代码


  我们相当于是用了接口回调 的原理  我们把获取验证码提交给后台,然后后台会给我们匹配一个验证码发送到手机上,就是相当于在后台给这个手机号有了一个id,就是这个验证码,只有你输入正确,和他给的这个相匹配,才能进入某个界面或是登录一些信息等等。。。


逻辑很简单  下面我直接上代码:

注意:#号改成你自己的key值。

<pre name="code" class="java">public class MainActivity extends AppCompatActivity {
    @InjectView(R.id.ed)
    EditText ed;
    @InjectView(R.id.button)
    Button button;
    @InjectView(R.id.ed1)
    EditText ed1;
    @InjectView(R.id.bts)
    Button bts;
    private String trim;
    private String code;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.inject(this);
        SMSSDK.initSDK(this, "##########", "#############");



    }
    public void getregist() {
        EventHandler eh=new EventHandler(){
            @Override
            public void afterEvent(int event, int result, Object data) {
                if (result == SMSSDK.RESULT_COMPLETE) {
                    //回调完成
                    if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
                        //提交验证码成功
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(getApplication(),
                                        "验证码正确,可以订餐啦!", Toast.LENGTH_SHORT).show();
                            }
                        });
                    }else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){
                        //获取验证码成功
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(getApplication(),
                                        "验证码已发送,请等待", Toast.LENGTH_SHORT).show();
                            }
                        });
                    }else if (event ==SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){
                        //返回支持发送验证码的国家列表
                    }
                }else{
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(getApplication(),
                                    "获取失败,请重新获取验证码", Toast.LENGTH_SHORT).show();
                        }
                    });
                    ((Throwable)data).printStackTrace();
                }
            }
        };
        SMSSDK.registerEventHandler(eh); //注册短信回调

    }
    @OnClick({R.id.button, R.id.bts})
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.button:
                getregist();
                trim = ed.getText().toString().trim();
                if (TextUtils.isEmpty(trim)){
                    Toast.makeText(getApplication(),
                            "输入有误,请重新输入",
                            Toast.LENGTH_SHORT).show();
                }else{
                    SMSSDK.getVerificationCode("86",trim);
                }
                break;
            case R.id.bts:
                trim = ed.getText().toString().trim();
                code = ed1.getText().toString().trim();
                if (TextUtils.isEmpty(trim)&&TextUtils.isEmpty(code)){
                    Toast.makeText(getApplication(),
                            "请检验你输入的验证码", Toast.LENGTH_SHORT).show();
                }else{
                    SMSSDK.submitVerificationCode("86",trim,code);
                }
                break;
        }
    }
}


 


 
到这里我们就可以实现简单的短信验证了!快去试试吧,写的应该很详细了,看不懂的可以给我留言评论 我会改正。。。












  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 要实现短信验证码登录,需要以下步骤: 1. 用户输入手机号码,点击发送验证码按钮,后台服务向该手机号码发送验证码短信。 2. 用户输入收到的短信验证码,点击登录按钮。 3. 后台服务验证手机号码和短信验证码是否匹配,如果匹配则登录成功,否则登录失败。 以下是使用 Java 实现短信验证码登录的示例代码: ``` // 生成随机的验证码 String code = String.valueOf((int)((Math.random()*9+1)*100000)); // 将验证码存储到缓存中,这里使用了 Redis 缓存,可以根据自己的情况选择合适的缓存方式 redisTemplate.opsForValue().set("sms_" + phone, code, 5, TimeUnit.MINUTES); // 发送短信验证码 sendSms(phone, code); ``` ``` // 根据手机号码和验证码判断是否可以登录 String cacheCode = redisTemplate.opsForValue().get("sms_" + phone); if (!code.equals(cacheCode)) { // 验证码不正确 return "验证码不正确,请重新输入"; } // 验证码正确,进行登录操作 User user = userService.loginByPhone(phone); if (user == null) { // 用户不存在 return "用户不存在,请先注册"; } // 将用户信息存储到 session 中 session.setAttribute("user", user); return "登录成功"; ``` 需要注意的是,发送短信验证码和验证短信验证码是否正确的具体实现方式需要根据所使用的短信服务提供商进行调整。 ### 回答2: 要实现短信验证码登录功能,可以使用Java编程语言结合第三方短信服务提供商的API来实现。 首先,我们需要调用短信服务提供商的API接口来发送验证码短信。根据短信服务商的不同,发送短信方式也有所差异,但一般来说,我们需要提供手机号码、短信内容和发送者等信息,并通过请求发送短信。 接下来,用户输入手机号码和接收到的短信验证码后,我们需要验证验证码的有效性。可以通过与短信服务提供商的接口进行对比来验证验证码是否有效。一般来说,我们会将接收到的手机号码和验证码一同传递给短信服务商的API,并获取返回结果。如果验证码有效,我们可以继续进行登录操作;如果验证码无效,可能需要重新发送验证码或提示用户验证码有误。 在登录操作时,可以使用Java中的HttpURLConnection或HttpClient等工具来发送带有手机号码和验证码登录请求到后台服务器。后台服务器接收到登录请求后,可以再次验证手机号码和验证码,并对用户进行身份认证。如果验证成功,可以返回登录成功的响应;如果验证失败,可以返回登录失败的响应。 总结起来,实现短信验证码登录需要以下步骤: 1. 调用短信服务提供商的API发送验证码短信; 2. 用户输入手机号码和接收到的短信验证码; 3. 验证验证码的有效性; 4. 发送带有手机号码和验证码登录请求到后台服务器; 5. 后台服务器通过验证手机号码和验证码,并进行身份认证; 6. 返回登录结果给客户端。 以上就是用Java实现短信验证码登录的大致过程。具体实现过程中,还需要考虑异常处理、请求参数的加密与解密、接口调用频率限制等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值