在Spring Boot应用中集成Twilio Verify以实现短信验证码功能

要在Spring Boot应用程序中使用Twilio Verify发送验证码短信,你需要按照以下步骤操作:

图片[1]_在Spring Boot应用中集成Twilio Verify以实现短信验证码功能_知途无界

创建Twilio账户
首先,你需要在Twilio官网(https://www.twilio.com/)注册一个账户。注册后,你将获得一个Account SID、Auth Token和一个Twilio电话号码。

添加Twilio依赖
在你的Spring Boot项目的pom.xml文件中添加Twilio的Maven依赖。

    <dependency>
    <groupId>com.twilio.sdk</groupId>
    <artifactId>twilio</artifactId>
    <version>8.29.0</version> <!-- 确保使用最新版本 -->
    </dependency>
    <dependency>
        <groupId>com.twilio.sdk</groupId>
        <artifactId>twilio</artifactId>
        <version>8.29.0</version> <!-- 确保使用最新版本 -->
    </dependency>
    <dependency> <groupId>com.twilio.sdk</groupId> <artifactId>twilio</artifactId> <version>8.29.0</version> <!-- 确保使用最新版本 --> </dependency>

    配置Twilio属性
    在你的application.propertiesapplication.yml文件中添加Twilio的Account SID、Auth Token和Twilio电话号码。

      twilio.account.sid=你的Account SID
      twilio.auth.token=你的Auth Token
      twilio.phone.number=你的Twilio电话号码
      twilio.account.sid=你的Account SID
      twilio.auth.token=你的Auth Token
      twilio.phone.number=你的Twilio电话号码
      twilio.account.sid=你的Account SID twilio.auth.token=你的Auth Token twilio.phone.number=你的Twilio电话号码

      创建Twilio配置类
      创建一个配置类来加载这些属性。

        import org.springframework.beans.factory.annotation.Value;
        import org.springframework.context.annotation.Configuration;
        @Configuration
        public class TwilioConfig {
        @Value("${twilio.account.sid}")
        private String accountSid;
        @Value("${twilio.auth.token}")
        private String authToken;
        @Value("${twilio.phone.number}")
        private String phoneNumber;
        public String getAccountSid() {
        return accountSid;
        }
        public String getAuthToken() {
        return authToken;
        }
        public String getPhoneNumber() {
        return phoneNumber;
        }
        }
        import org.springframework.beans.factory.annotation.Value;
        import org.springframework.context.annotation.Configuration;
        
        @Configuration
        public class TwilioConfig {
        
            @Value("${twilio.account.sid}")
            private String accountSid;
        
            @Value("${twilio.auth.token}")
            private String authToken;
        
            @Value("${twilio.phone.number}")
            private String phoneNumber;
        
            public String getAccountSid() {
                return accountSid;
            }
        
            public String getAuthToken() {
                return authToken;
            }
        
            public String getPhoneNumber() {
                return phoneNumber;
            }
        }
        import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; @Configuration public class TwilioConfig { @Value("${twilio.account.sid}") private String accountSid; @Value("${twilio.auth.token}") private String authToken; @Value("${twilio.phone.number}") private String phoneNumber; public String getAccountSid() { return accountSid; } public String getAuthToken() { return authToken; } public String getPhoneNumber() { return phoneNumber; } }

        创建Twilio服务类
        创建一个服务类来处理Twilio Verify相关的操作。

          import com.twilio.Twilio;
          import com.twilio.rest.verify.v2.Service;
          import com.twilio.rest.verify.v2.Verification;
          import com.twilio.type.PhoneNumber;
          import org.springframework.beans.factory.annotation.Autowired;
          import org.springframework.stereotype.Service;
          @Service
          public class TwilioVerifyService {
          private final TwilioConfig twilioConfig;
          @Autowired
          public TwilioVerifyService(TwilioConfig twilioConfig) {
          this.twilioConfig = twilioConfig;
          Twilio.init(twilioConfig.getAccountSid(), twilioConfig.getAuthToken());
          }
          public Verification sendVerificationCode(String toPhoneNumber) {
          Service service = Service.fetcher("你的Verify Service SID").fetch(); // 替换为你的Verify Service SID
          return service.verifications()
          .create(
          new PhoneNumber(toPhoneNumber),
          "sms" // 发送方式,可以是sms或call
          );
          }
          public boolean verifyCode(String toPhoneNumber, String verificationCode) {
          Service service = Service.fetcher("你的Verify Service SID").fetch(); // 替换为你的Verify Service SID
          return service.verifications()
          .verify(toPhoneNumber, verificationCode)
          .getStatus()
          .equals("approved");
          }
          }
          import com.twilio.Twilio;
          import com.twilio.rest.verify.v2.Service;
          import com.twilio.rest.verify.v2.Verification;
          import com.twilio.type.PhoneNumber;
          import org.springframework.beans.factory.annotation.Autowired;
          import org.springframework.stereotype.Service;
          
          @Service
          public class TwilioVerifyService {
          
              private final TwilioConfig twilioConfig;
          
              @Autowired
              public TwilioVerifyService(TwilioConfig twilioConfig) {
                  this.twilioConfig = twilioConfig;
                  Twilio.init(twilioConfig.getAccountSid(), twilioConfig.getAuthToken());
              }
          
              public Verification sendVerificationCode(String toPhoneNumber) {
                  Service service = Service.fetcher("你的Verify Service SID").fetch(); // 替换为你的Verify Service SID
                  return service.verifications()
                          .create(
                                  new PhoneNumber(toPhoneNumber),
                                  "sms" // 发送方式,可以是sms或call
                          );
              }
          
              public boolean verifyCode(String toPhoneNumber, String verificationCode) {
                  Service service = Service.fetcher("你的Verify Service SID").fetch(); // 替换为你的Verify Service SID
                  return service.verifications()
                          .verify(toPhoneNumber, verificationCode)
                          .getStatus()
                          .equals("approved");
              }
          }
          import com.twilio.Twilio; import com.twilio.rest.verify.v2.Service; import com.twilio.rest.verify.v2.Verification; import com.twilio.type.PhoneNumber; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class TwilioVerifyService { private final TwilioConfig twilioConfig; @Autowired public TwilioVerifyService(TwilioConfig twilioConfig) { this.twilioConfig = twilioConfig; Twilio.init(twilioConfig.getAccountSid(), twilioConfig.getAuthToken()); } public Verification sendVerificationCode(String toPhoneNumber) { Service service = Service.fetcher("你的Verify Service SID").fetch(); // 替换为你的Verify Service SID return service.verifications() .create( new PhoneNumber(toPhoneNumber), "sms" // 发送方式,可以是sms或call ); } public boolean verifyCode(String toPhoneNumber, String verificationCode) { Service service = Service.fetcher("你的Verify Service SID").fetch(); // 替换为你的Verify Service SID return service.verifications() .verify(toPhoneNumber, verificationCode) .getStatus() .equals("approved"); } }

          注意:你的Verify Service SID是你在Twilio Verify控制台中创建的服务SID。

          创建控制器
          创建一个控制器来处理发送验证码和验证验证码的请求。

            import org.springframework.beans.factory.annotation.Autowired;
            import org.springframework.web.bind.annotation.*;
            import com.twilio.rest.verify.v2.Verification;
            @RestController
            @RequestMapping("/api/verify")
            public class VerifyController {
            private final TwilioVerifyService twilioVerifyService;
            @Autowired
            public VerifyController(TwilioVerifyService twilioVerifyService) {
            this.twilioVerifyService = twilioVerifyService;
            }
            @PostMapping("/send")
            public Verification sendVerificationCode(@RequestParam String phoneNumber) {
            return twilioVerifyService.sendVerificationCode(phoneNumber);
            }
            @PostMapping("/verify")
            public boolean verifyCode(@RequestParam String phoneNumber, @RequestParam String verificationCode) {
            return twilioVerifyService.verifyCode(phoneNumber, verificationCode);
            }
            }
            import org.springframework.beans.factory.annotation.Autowired;
            import org.springframework.web.bind.annotation.*;
            
            import com.twilio.rest.verify.v2.Verification;
            
            @RestController
            @RequestMapping("/api/verify")
            public class VerifyController {
            
                private final TwilioVerifyService twilioVerifyService;
            
                @Autowired
                public VerifyController(TwilioVerifyService twilioVerifyService) {
                    this.twilioVerifyService = twilioVerifyService;
                }
            
                @PostMapping("/send")
                public Verification sendVerificationCode(@RequestParam String phoneNumber) {
                    return twilioVerifyService.sendVerificationCode(phoneNumber);
                }
            
                @PostMapping("/verify")
                public boolean verifyCode(@RequestParam String phoneNumber, @RequestParam String verificationCode) {
                    return twilioVerifyService.verifyCode(phoneNumber, verificationCode);
                }
            }
            import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import com.twilio.rest.verify.v2.Verification; @RestController @RequestMapping("/api/verify") public class VerifyController { private final TwilioVerifyService twilioVerifyService; @Autowired public VerifyController(TwilioVerifyService twilioVerifyService) { this.twilioVerifyService = twilioVerifyService; } @PostMapping("/send") public Verification sendVerificationCode(@RequestParam String phoneNumber) { return twilioVerifyService.sendVerificationCode(phoneNumber); } @PostMapping("/verify") public boolean verifyCode(@RequestParam String phoneNumber, @RequestParam String verificationCode) { return twilioVerifyService.verifyCode(phoneNumber, verificationCode); } }

            启动你的Spring Boot应用程序
            现在你可以启动你的Spring Boot应用程序,并通过API发送和验证验证码短信。

              例如,你可以使用curl命令或Postman来测试这些API:

              • 发送验证码:
              curl -X POST "http://localhost:8080/api/verify/send?phoneNumber=+1234567890"
              curl -X POST "http://localhost:8080/api/verify/send?phoneNumber=+1234567890"
              curl -X POST "http://localhost:8080/api/verify/send?phoneNumber=+1234567890"
              • 验证验证码:
              curl -X POST "http://localhost:8080/api/verify/verify?phoneNumber=+1234567890&verificationCode=123456"
              curl -X POST "http://localhost:8080/api/verify/verify?phoneNumber=+1234567890&verificationCode=123456"
              curl -X POST "http://localhost:8080/api/verify/verify?phoneNumber=+1234567890&verificationCode=123456"

              确保你已经替换了所有占位符(如你的Account SID你的Auth Token你的Twilio电话号码你的Verify Service SID)为你的实际Twilio账户信息。

              © 版权声明
              THE END
              喜欢就点个赞,支持一下吧!
              点赞84 分享
              Happiness is not something you postpone for the future; it is something you design for the present.
              幸福不应该留到未来品尝,幸福是你专门为当下的自己所准备的
              评论 抢沙发
              头像
              欢迎您留下评论!
              提交
              头像

              昵称

              取消
              昵称表情代码图片

                暂无评论内容