首页 > 其他分享 >基于阿里云实现手机号验证功能

基于阿里云实现手机号验证功能

时间:2024-05-17 10:40:37浏览次数:15  
标签:短信 手机号 验证 request 阿里 result ID string

一、阿里云手机短信验证码服务

  1. 阿里云创建账号 https://home.console.aliyun.com/home/dashboard/ProductAndService

  2. 搜索短信服务

  3. 选择签名、资质管理、新增资质

  4. 创建签名

  1. 创建新模版,其中对映签名等信息

  1. 查看模版

  2. 获取ID 和 Key

    (1).选中头像,创建AccessKey

  3. 创建工具类

      /// <summary>
            /// 发送手机短信信息(通过阿里云SDK)
            /// </summary>
            /// <param name="aliAccessKey">授权id(阿里云账号的AccessKeyId)</param>
            /// <param name="aliAccessSecret">授权密钥(阿里云账号的AccessKeySecret)</param>
            /// <param name="phoneNumber">接收手机号(多个用逗号隔开)</param>
            /// <param name="signName">短信签名</param>
            /// <param name="tempCode">短信模板ID</param>
            /// <param name="tempParam">短信模板变量</param>
            /// <returns></returns>
            public static JObject SendMessageByAliSms(string aliAccessKey, string aliAccessSecret, string phoneNumber, string signName, string tempCode, string tempParam)
            {
                //返回结果对象
                JObject result = new JObject();
    
                //接口文档(里面有sdk):https://help.aliyun.com/product/44282.html?spm=5176.12226155.0.0.33ac1cbeMfrIwkhttps://home.firefoxchina.cn           
                IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", aliAccessKey, aliAccessSecret);   //cn-hangzhou: 默认节点
                DefaultAcsClient client = new DefaultAcsClient(profile);
                CommonRequest request = new CommonRequest();
                request.Method = MethodType.POST;  //请求方式
                request.Domain = "dysmsapi.aliyuncs.com";  //请求域名
                request.Version = "2017-05-25";  //请求版本
                request.Action = "SendSms";  //请求操作
                request.AddQueryParameters("PhoneNumbers", phoneNumber);
                request.AddQueryParameters("SignName", signName);
                request.AddQueryParameters("TemplateCode", tempCode);
                request.AddQueryParameters("TemplateParam", tempParam);
                try
                {
                    //发送请求请返回响应
                    CommonResponse response = client.GetCommonResponse(request);
                    //获取返回的内容
                    string content = Encoding.Default.GetString(response.HttpResponse.Content);
                    //序列化成对象(Code: 请求状态码,Message:状态码描述,BizId:发送回执ID, RequestId: 请求ID)
                    result = (JObject)JsonConvert.DeserializeObject(content);
    
                }
                catch (ServerException e)
                {
                    result.Add("Code", "500");
                    result.Add("Message", "短信服务异常:" + e.Message);
                }
                catch (ClientException e)
                {
                    result.Add("Code", "501");
                    result.Add("Message", "客户端异常:" + e.Message);
                }
                return result;
            }
    
            #endregion
        }
    
    
    public static class AliInfor
        {
            #region 阿里云平台短信服务
    
            //获取配置文件的授权ID、授权密钥
            public static string aliAccessKeyId = "";//输入ID
            public static string aliAccessKeySecret = "";//输入秘钥
    
            /// <summary>
            /// 发送手机短信验证码(阿里云平台)
            /// </summary>
            /// <param name="mobile">接收手机</param>
            /// <param name="signName">短信签名</param>
            /// <param name="tempCode">短信模板ID</param>
            /// <param name="mobileCode">短信验证码</param>
            /// <returns></returns>
            public static bool SendMobileMessageByAli(string mobile, string signName, string tempCode, string mobileCode)
            {
                //拼接读短信目标变量值  "{\"code\":\"1234\"}"
                string tempParam = "{'code" + "':" + mobileCode + "}";// $"code:{mobileCode}";
                                                                      //发送短信并返回结果
                JObject result = SendMessageByAliSms(aliAccessKeyId, aliAccessKeySecret, mobile, signName, tempCode, tempParam);
                //返回代码
                if (result["Code"].ToString().ToLower() == "ok")
                {
                    return true;
                }
                else
                {
                    return false;
                }
    
            }
    
          
    
  4. API调用

     /// <summary>
     /// 发送验证码
     /// </summary>
     /// <param name="uTel">手机号码</param>
     /// <param name="ges">验证码</param>
     public void GetTelLogin(string? uTel,string? ges)
     {
         bool isSuccess = AliInfor.SendMobileMessageByAli(uTel, "系统名称", "SMS_465635094", ges);
     }
    

标签:短信,手机号,验证,request,阿里,result,ID,string
From: https://www.cnblogs.com/mxfenfei/p/18197446

相关文章

  • Ionic 在 AuthGuard 中验证登录状态
    Ionic在AuthGuard中验证登录状态‍通过ionicgserviceservices/storage​创建StorageService​管理存储相关的操作:import{Injectable}from'@angular/core';import{Storage}from'@ionic/storage-angular';@Injectable({providedIn:'root'......
  • Windows无法访问共享文件夹,提示:你不能访问此共享文件夹,因为你组织的安全策略阻止未经
    1、问题描述Windows系统里访问局域网共享文件夹时,提示:“你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问。这些策略可帮助保护你的电脑免受网络上不安全设备或恶意设备的威胁。”2、主要原因未启动启用策略:不安全的来宾登录3、解决方法1)Windows+R键,打开运......
  • java生成数字运算验证码
    第一步,引入依赖<!--验证码依赖--><dependency><groupId>com.github.whvcse</groupId><artifactId>easy-captcha</artifactId><version>1.6.2</version></dependency> <!--算数验证码使用--><dependency><groupId>......
  • 阿里DataX极简教程
    目录简介工作流程核心架构核心模块介绍DataX调度流程支持的数据实践下载环境执行流程引用简介DataX是一个数据同步工具,可以将数据从一个地方读取出来并以极快的速度写入另外一个地方。常见的如将mysql中的数据同步到另外一个mysql中,或者另外一个mongodb中。工作流程read:设置......
  • 腾讯、阿里、B站最新面经汇总,有的妥妥的凉经
    除了BAT(没错我说的B是B站的B),还有网易、希音科技、美柚等中小厂的最新面经。这次投稿的同学行文幽默风趣,处处透漏着不成功便搞笑的骚气。祝他早日上岸,也欢迎大家在评论区讨论这些面试题,有哪些面试题不知道怎么回答好,可以在评论区讨论留言,我会及时回复的。b站外包/go开发/一面......
  • 易基因:干货|DNA甲基化测序后的后期验证方法
    易基因:干货|DNA甲基化测序后的后期验证方法大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。做完测序后,如果需要对分析结果中感兴趣的内容进行后期验证,则需要进行下游实验设计。DNA甲基化研究的后期验证包括简单验证、全基因组甲基化干扰实验(非靶向)、靶向目标基......
  • 阿里P3C-PMD配合Gitlab做编码规范检查
    1.Linux安装的Gitlab参考这篇博文:Gitlab+P3C-PMD1.1P3C-PMD插件下载并打jar包下载地址本地文件:p3c-master.zip本地jar包:p3c-pmd-2.1.1-jar-with-dependencies.jar直接下载zip包,然后解压,进入p3c-pmd目录,cmd命令,执行如下mvn命令,编译Kotlin代码mvncleankotlin:compilep......
  • 阿里nginx error日志配置
    配置名称:nginx_sys_error_log_config 日志主题类型->文件路径提取->\/var\/log\/nginx\/(.*?)\/error.log文件路径:/var/log/nginx/    error.log  最大目录监控深度:2层日志样例:2024/01/2701:25:58[crit]221214#221214:*29786open()"/var/log/nginx/zhixiaoer......
  • 【django学习-26】图片验证码
    1.我们在登录的时候,经常看到输入用户名、密码之外。还需要输入验证码。这个验证码是怎么实现的呢?2.前端{%loadstatic%}<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><linkrel="styleshee......
  • 2.2.1最简单的验证平台(单个driver)
    书中的DUT(待测设计)定义如下:这个DUT的功能非常简单,通过rxd接收数据,再通过txd发送出去,其中rx_dv是接收的数据有效指示,tx_en是发送数据的有效指示。本章中的所有例子都是基于这个DUT.验证平台中的所有组件都应该派生自UVM中的类。比如UVM验证平台中的driver应该派生自uvm_driver......