首页 > 其他分享 >基于阿里云服务实现短信验证码功能

基于阿里云服务实现短信验证码功能

时间:2023-09-02 13:01:53浏览次数:41  
标签:短信 string 创建 request 验证码 阿里 模板

前言:

阿里云短信服务是一项基于云计算和大数据技术的企业级短信平台服务。它能够为企业和开发者提供高可用、高性能、高稳定性的短信发送服务,可以快速地将各类业务通知、验证码、营销推广等信息发送给用户。在我们经常登录一些系统或者APP时候,经常会遇到其他登录登录方式——短信验证码登录。这也是我前一段时间优化一个系统时新增加的一个登录功能,mark记录一下。

一、准备工作:

登录阿里云官网注册用户:

https://dysms.console.aliyun.com/

登录后完成个人或者企业认证:

说明: 供个人学习测试,建议个人认证就可以。认证完成后,会赠送100条免费测试短信,用完后需要续费购买。

基于阿里云服务实现短信验证码功能_阿里云

创建AccessKey :

Step1:点击右上角头像=>AccessKey 管理

基于阿里云服务实现短信验证码功能_验证码_02

Step2:点击创建,填写内容后创建,此处我已经创建

基于阿里云服务实现短信验证码功能_验证码_03

Step3:创建后,查看复制出AccessKeySecret和AccessKeyId,供后续程序调用API使用

基于阿里云服务实现短信验证码功能_验证码_04

创建签名 :

说明: 短信发送时,必须要模板和签名搭配使用,必须创建。创建消息模板时候需要关联签名,所以要先创建签名,等待签名审核通过,再创建消息模板。

基于阿里云服务实现短信验证码功能_阿里云_05

基于阿里云服务实现短信验证码功能_验证码_06

创建消息模板:

说明: 如上所述,需要关联已经审核通过的签名。

基于阿里云服务实现短信验证码功能_验证码_07

基于阿里云服务实现短信验证码功能_验证码_08

完成创建详情:

基于阿里云服务实现短信验证码功能_阿里云_09

二、创建项目:

项目结构:

说明: 方便测试,创建Winform窗体程序。项目结构目录如下:

基于阿里云服务实现短信验证码功能_阿里云_10

说明: 通过Nuget引用阿里云SDK包

Aliyun-net-sdk-dysmsapi   -----api包Aliyun-net-sdk-core   -----安装核心SDK

三、核心代码:

主窗体:

基于阿里云服务实现短信验证码功能_阿里云_11

点击触发事件代码:

private void btSendMsg_Click(object sender, EventArgs e)
        {
            string phone = "13004089962";//手机号码,多个用,分割
            string code = "888888";//验证码
            string msg = "{\"code\":\"" + code + "\"}";//拼接验证码Json格式,参数名称和消息模板中保持一致
            string templateCode = "SMS_461895332";//消息模板编码
            var  ret  =  AliMsgService.SendUserSms(phone, msg, templateCode);
         }

调用阿里云API服务业务短端代码:

public class AliMsgService
    {


        //产品名称:云通信短信API产品,开发者无需替换
        const String product = "Dysmsapi";
        //产品域名,开发者无需替换
        const String domain = "dysmsapi.aliyuncs.com";

        // TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
        private static String accessKeyId = "";//AccessKey管理中查看
        private static String accessKeySecret = "";//AccessKey管理中查看

        /// <summary>
        /// 发送消息通知
        /// </summary>
        /// <param name="phone">推送手机号</param>
        /// <param name="msg">JSON参数</param>
        /// <param name="TemplateCode">短信模板</param>
        /// <returns></returns>
        public static smsrespon SendUserSms(string phone, string msg, string TemplateCode)
        {
            IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);
            DefaultAcsClient client = new DefaultAcsClient(profile);
            CommonRequest request = new CommonRequest();
            request.Method = MethodType.POST;
            request.Domain = domain;
            request.Version = "2017-05-25";//请求版本
            request.Action = "SendSms";
            request.AddQueryParameters("PhoneNumbers", phone);//必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,
            request.AddQueryParameters("SignName", "阿亮学习发送");//必填:短信签名-可在短信控制台中找到
            request.AddQueryParameters("TemplateCode", TemplateCode);//必填:短信模板-可在短信控制台中找到,发送国际/港澳台消息时,请使用国际/港澳台短信模版
            request.AddQueryParameters("TemplateParam", msg);//"{\"code\":\"" + code + "\"}"
            try
            {
                CommonResponse response = client.GetCommonResponse(request);
                return JsonConvert.DeserializeObject<smsrespon>(response.Data);
            }
            catch (ServerException e)
            {
                return new smsrespon { Message = "阿里云发送验证码异常", Code = "no" };
            }
            catch (ClientException e)
            {
                return new smsrespon { Message = "阿里云发送验证码失败", Code = "no" };
            }
        }

        public class smsrespon
        {
            public string Message { get; set; }
            public string RequestId { get; set; }
            public string BizId { get; set; }
            public string Code { get; set; }
        }
    }

四、测试验证:

测试收到验证码截图:

基于阿里云服务实现短信验证码功能_阿里云_12

阿里云后台数据实时数据:

基于阿里云服务实现短信验证码功能_验证码_13

基于阿里云服务实现短信验证码功能_验证码_14

基于阿里云服务实现短信验证码功能_验证码_15

源码链接地址:

Gitee完整实例地址:

https://gitee.com/mingliang_it/AliyunSendMsgTest.git


技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!

开源库地址,欢迎点亮:

GitHub: https://github.com/ITMingliang

Gitee:  https://gitee.com/mingliang_it

GitLab:  https://gitlab.com/ITMingliang

基于阿里云服务实现短信验证码功能_验证码_16

标签:短信,string,创建,request,验证码,阿里,模板
From: https://blog.51cto.com/u_16244728/7332006

相关文章

  • 阿里云亮相数据库顶会 VLDB 2023 特邀主旨演讲:云数据库要像乐高积木一样好用
    北京时间8月30日,数据库国际顶会VLDB在加拿大温哥华开幕,来自阿里云、达摩院及合作者的论文共入选17篇,其中工业赛道(Industrial Track)收录7篇阿里云论文,均刷新中国企业纪录。在VLDB大会现场,阿里云数据库负责人李飞飞作大会特邀主旨演讲时表示,随着云计算基础设施的完善和......
  • 祝贺!Databend Cloud 和阿里云 PolarDB 达成认证
    近日,北京数变科技有限公司旗下产品与阿里云PolarDB开源数据库社区展开产品集成认证。测试结果表明,北京数变科技有限公司旗下产品《DatabendCloud(V1.25)》正式通过了《阿里云PolarDB数据库管理软件》的技术认证,并收到了阿里云颁发的产品认证证书。经过严格联合测试,双方产品完......
  • 手机版 - imessage信息群发,苹果imessages短信,imessages推信,苹果手机推信,苹果imess
    Apple公司全线在macos与ios两个操作系统上内置了FaceTime与iMessage两个应用。完美替代运营商的短信与电话。并且FaceTime与iMessage的帐号不仅仅与AppleID绑定,同时也与使用这AppleID的手机号码绑定,这样的漏洞自然给无孔不入的群发垃圾信息商们提供了后门。这样iPhone的iMessa......
  • 阿里云sls日志服务使用
    使用开启sls服务,需要充值创建project创建logstore给sls服务创建一个RAM账号,并分配权限给账号创建accessKeySecret秘钥对logstore下日志的字段创建索引(创建索引的字段才能搜索)通过阿里提供的sdk向logstore发送日志<dependency><groupId>com.aliyun.openservices</gr......
  • 远程连接阿里云服务器的几种方式(包括Windows和linux系统)
    远程连接阿里云服务器的几种方式(包括Windows和linux系统)_远程登录阿里云_库博客的博客-CSDN博客远程连接Windows系统阿里云服务器:1、workbench远程连接方式点击“立即登陆”,然后输入Administrator用户的密码,即可登录云服务器。2、VNC连接方式输入远程连接密码后,按照提示......
  • 阿里云免费SSL证书申请
    阿里云SSL证书免费申请官方文档:免费SSL证书概述1、访问阿里云控制台1.1提交证书申请访问阿里云SSL证书申请页面:https://yundun.console.aliyun.com/?p=cas#/certExtend/free/cn-hangzhou在此页面选择“立即购买”,购买成功以后,选择“创建证书”。1.2验证我一直用的都是DNS......
  • 2023-08-29 记录——引入的阿里云图标显示不正确==》不正确的图标存在2个content值,浏
    前言:我在项目中引入了阿里云的图标库iconfont.css,如:.icon-wodewo:before{ content:"\e6e0";}.icon-jiaocheng-1:before{ content:"\e78d";}.icon-weixin:before{ content:"\e607";}我要用icon-weixin这个图标,但实际上页面显示的是icon-wodewo(好比如要......
  • 活动回顾|阿里云 Serverless 技术实践营 Serverless +AI 专场
    8月25日“阿里云Serverless技术实践营(Serverless+AI专场)”北京站圆满落幕。活动受众以关注Serverless+AI技术的开发者、企业决策人、云原生领域创业者为主,活动形式为演讲、动手实操,让开发者通过一个下午的时间增进对Serverless和AI技术的理解,快速上手Serverless,拥抱......
  • 活动回顾丨阿里云 Serverless 技术实践营 Serverless+AI 专场
    8月25日“阿里云Serverless技术实践营(Serverless+AI专场)”北京站圆满落幕。活动受众以关注Serverless+AI技术的开发者、企业决策人、云原生领域创业者为主,活动形式为演讲、动手实操,让开发者通过一个下午的时间增进对Serverless和AI技术的理解,快速上手Serverless,拥抱......
  • 基础底层短信服务的设计思路
    1.短信定义模板,根据模板ID,模板内容,模板内容中的符号来替换成真实的内容来发送。可以支持动态的调整短信模板文案。2.如果接入多家短信服务供应商,根据不同的发送比例来配置选择哪家供应商的比例,可以按100来作为基准,然后根据配置大小,每次发送短信的时候,随机生成一个100以内的随机数......