百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Spring Boot中对接Twilio以实现发送验证码和验证短信码

cac55 2025-03-19 10:44 7 浏览 0 评论

Twilio介绍

Twilio是一家提供云通信服务的公司,旨在帮助开发者和企业通过简单的API实现各种通信功能。以下是Twilio的一些主要特点和服务介绍:

核心功能

  • 短信服务(SMS):允许用户通过API发送和接收短信,支持全球范围内的短信发送。
  • 语音通话:提供语音通话的API,支持拨打和接听电话,语音识别等功能。
  • 视频通话:支持实时视频通话和视频会议,适用于各种应用场景。
  • 聊天服务:提供多种聊天功能,包括Web聊天、SMS聊天和社交媒体集成。
  • 电子邮件服务:通过SendGrid(Twilio收购的公司)提供电子邮件发送和管理服务。

代码工程

1. 添加依赖

在你的pom.xml中添加Twilio的依赖:



    
        springboot-demo
        com.et
        1.0-SNAPSHOT
    
    4.0.0

    Twilio

    
        8
        8
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-autoconfigure
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            com.twilio.sdk
            twilio
            8.25.0 
        
    

2. 配置Twilio

application.propertiesapplication.yml中添加Twilio的配置:

twilio.account-sid=你的Twilio账户SID
twilio.auth-token=你的Twilio认证Token
twilio.phone-number=你的Twilio电话号码

3. 创建Twilio配置类

创建一个配置类来初始化Twilio客户端:

package com.et.twilio.config;

import com.twilio.Twilio;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TwilioConfig {

    @Value("${twilio.account-sid}")
    private String accountSid;

    @Value("${twilio.auth-token}")
    private String authToken;

    @Bean
    public void init() {
        Twilio.init(accountSid, authToken);
    }
}

4. 创建服务类

创建一个服务类来处理发送验证码和验证短信码的逻辑:

package com.et.twilio.service;

import com.twilio.rest.api.v2010.account.Message;
import com.twilio.type.PhoneNumber;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Map;
import java.util.Random;

@Service
public class SmsService {

    @Value("${twilio.phone-number}")
    private String twilioPhoneNumber;

    private Map verificationCodes = new HashMap<>();

    public void sendVerificationCode(String toPhoneNumber) {
        String code = generateVerificationCode();
        verificationCodes.put(toPhoneNumber, code);

        Message.creator(
                new PhoneNumber(toPhoneNumber),
                new PhoneNumber(twilioPhoneNumber),
                "Your verification code is: " + code)
                .create();
    }

    public boolean verifyCode(String phoneNumber, String code) {
        String storedCode = verificationCodes.get(phoneNumber);
        return storedCode != null && storedCode.equals(code);
    }

    private String generateVerificationCode() {
        Random random = new Random();
        return String.format("%06d", random.nextInt(1000000)); // 生成6位验证码
    }
}

5. 创建控制器

创建一个控制器来处理HTTP请求:

package com.et.twilio.controller;

import com.et.twilio.service.SmsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/sms")
public class SmsController {

    @Autowired
    private SmsService smsService;

    @PostMapping("/send")
    public String sendVerificationCode(@RequestParam String phoneNumber) {
        smsService.sendVerificationCode(phoneNumber);
        return "Verification code sent!";
    }

    @PostMapping("/verify")
    public String verifyCode(@RequestParam String phoneNumber, @RequestParam String code) {
        boolean isValid = smsService.verifyCode(phoneNumber, code);
        return isValid ? "Verification successful!" : "Invalid verification code!";
    }
}

以上只是一些关键代码,所有代码请参见下面代码仓库

代码仓库

  • https://github.com/Harries/springboot-demo(Twilio)

6. 测试功能

启动你的 Spring Boot应用程序,并使用Postman或其他工具测试以下API:

  • 发送验证码:POST /api/sms/send?phoneNumber=目标手机号
  • 验证验证码:POST /api/sms/verify?phoneNumber=目标手机号&code=验证码

注意事项

  • 确保你的Twilio账户已验证并且可以发送短信。
  • 处理验证码的存储和过期逻辑,以防止滥用。
  • 考虑使用更安全的存储方式(如数据库)来存储验证码,而不是使用内存中的Map。

这样,你就可以在Spring Boot中实现与Twilio的集成,发送和验证短信验证码的功能

相关推荐

PDF转Excel后,转出的表格全是乱码是怎么回事?

日常工作中经常会用到将各种办公文档不同格式进行互转,比如将PDF转成Excel,这种转换非常简单,工具也很多,但是有时PDF文档是正常的,转出来的表格却全是乱码是怎么回事呢?在PDF转Excel时,你...

Python CSV 模块通关秘籍:数据表格处理不求人

对话实录小白:(苦恼)我导出的CSV用Excel打开全是乱码!专家:(递上秘籍)(掏出魔法书)**编码问题!用utf-8-sigma保存!CSV格式初体验CSV后缀的文件是标准文件格式,可以通过文本编...

ArcMap碎碎念(常见使用问题集锦)(arcgis细碎小班)

这几日,由于工作原因,频繁使用ArcMap,期间也碰到了些许问题,因而攒了这篇文章,以作记录。1.数据转换:mxd转mpk格式后缀为mxd的文件类型在ArcGIS的使用过程中较为常见,也即为常见的地图...

Excel常用技能分享与探讨(4-经常遇到的问题点汇总②)

一、文件异常问题Excel文件损坏无法打开现象:提示“文件已损坏”“无法读取内容”或直接闪退。解决:使用【文件】→【打开】→选择文件→点击右下角【打开】下拉箭头→选择【打开并修复】。若失败,尝...

解决Excel“#”乱码的方法来了(excel表格嵌入图片别人打开是乱码怎么解决)

小编本人是个表格控,没有excel可能分分钟就会焦虑,刚用excel大概半年多的时间,随着数据传递的频繁和增多,发现了一个奇怪的问题。做好的表格保存后再打开会变成“###”还有时,会出现这样的日期这时...

如何修复损坏的 Excel 文件?3 个方法救回重要数据

有没有遇到这种情况:打开Excel提示“文件已损坏,无法打开”明明很重要的数据,却打不开了…别急!今天分享3个实用方法,帮你修复Excel文件,拯救重要数据!方法一:用Excel自带...

为什么你的 GIS 数据总是出现乱码?

你肯定遇到过这种情况:把GIS文件拖进BigemapPro,但为啥文字就变成了乱码?例如这样:遇到这种情况呢,你也别急,我来教你怎么处理。一、三调数据文件乱码我们通常拿到的三调数据文件是GDB格式的,...

Excel表格数字乱码怎么办?推荐四种简单方法

我们经常利用Excel表格录入数据,在录入数据的时候我们经常会遇到这种情况:因为录入的数字的数位较多导致数字乱码。这种情况真的很影响我们的工作进程。那么Excel表格数字乱码该怎么办呢?推荐大家使用这...

使用Excel时经常遇到的问题,别担心,轻松告诉你解决方案

Excel打开CSV文件为乱码的解决方法!Excel中外部数据链接无法删除怎么办?Excel打开CSV文件为乱码的解决方法!从网页上导出数据文件存储为CSV格式的文件,使用记事本打开文字显示没有问题,...

解决数据恢复软件——恢复的excel文件乱码问题

恢复的excel文件出现乱码通常与原始文件损坏有关,为了解决数据恢复后excel乱码问题,建议使用数据恢复软件的深度恢复扫描,再次扫描需要恢复的excel文件所在磁盘,该扫描方式能对硬件设备进行碎片文...

Excel表格中怎么删除乱码?一秒搞定

随着我们越来越多的使用Excel,我们会发现很多情况下Excel会返回一串乱码似的字符。这些其实并不是乱码。Excel执行公式运算时都会自动对单元格中输入的公式进行检查,当公式如果不能正确地计算时返回...

EXCEL打开CSV等数据文件是乱码怎么办?

使用Data.olllo数据助手解决EXCEL打开CSV、TXT数据乱码的问题计算机存储的文件是有不同的编码方式,而有时候EXCEL打开CSV或TXT文件的时候,发现是乱码,这时候应该怎么办呢?工具:...

Excel表格出现乱码,怎么办?只需要7步,就能完美解决问题

当打开表格时出现乱码,首先需要检查文件的编码格式,确认文件编码格式是否与本地编码格式一致。如果编码格式不一致,可以在打开表格时选择正确的编码格式。如果不确定编码格式,可以试着把文件保存为ANSI或者...

我的Excel打开后是一堆乱码,如何解决?

Excel文件内容变成乱码,可能由于文件编码、文件格式或Excel程序设置的问题导致。以下是一些有效的解决方案,可以帮助你解决Excel乱码问题1.确认文件编码是否正确如果文件是从外部导入的(例如C...

Excel文件打开乱码问题解决方法详解

在日常办公或数据处理中,Excel文件是极为常用的工具。然而,有时当我们尝试打开一个Excel文件时,可能会遇到内容显示为乱码的情况,这不仅影响工作效率,还可能导致重要数据的丢失或损坏。本文将详细介绍...

取消回复欢迎 发表评论: