阿里云短信服务使用介绍

本文介绍了如何使用阿里云短信服务,包括注册阿里云账号、开通短信服务、创建开发者用户、设置签名和模板、授权、查看示例和API文档。此外,还解决了可能出现的错误,如访问权限问题、JSON参数错误、账户余额不足等。

简介

      现在很多的应用包括手机App、网页等绝大多数都已经采用了邮箱、短信验证的方式,甚至很多游戏都需要绑定邮箱和手机号,并通过发送邮件、短信验证码来实现账号的有效化验证和绑定。就像某些应用在用户注册账号的时候直接以用户的邮箱、手机号直接作为登录账号也是屡见不鲜,这样做的好处是避免用户专门去记多余的账号,难道会有人连自己的手机号码都记不住的吗?
      好了,废话不多说,直接进入正题。要想发送短信,就需要一个短信服务器,国内的有mob(当初开发安卓App的时候用过这个短信服务)、阿里云(阿里云可不止是做服务器租赁)等(别的没用过这里不提),在这里介绍的是阿里云的短信服务。

阿里云短信服务配置流程

   ①你需要注册一个阿里云账号
   地址https://account.aliyun.com/login/login.htm
   说明:要想使用第三方的平台服务就需要在该平台上进行注册。

   ②开通免费短信服务
   地址https://www.aliyun.com/product/sms
   说明:相当于在你的阿里云账号上开通这个服务。
   位置产品分类->云计算基础->云通信->短信服务

   ③注册成为开发者用户
   地址https://ram.console.aliyun.com/users
   说明:新建一个短信服务的使用用户,即注册成为开发者用户,用户创建完毕后会自动生成一个AccessKey ID(用户唯一标识)AccessKeySecet(密钥),这两个参数需要额外记录,一旦页面刷新就找不到了。
   位置RAM访问控制->人员管理->用户

   ④添加签名(注册应用唯一标识)
   地址https://dysms.console.aliyun.com/dysms.htm#/domestic/text/sign
   说明:是为了得到你的应用对应的一个唯一签名,可以理解为应用的唯一短信服务标识。阿里云会根据这个签名来识别不同的应用,不然短信发错了怎么办。
   位置短信服务->国内消息->签名管理->添加签名

   ⑤添加短信模板
   地址https://dysms.console.aliyun.com/dysms.htm#/domestic/text/template/add
   说明:短信内容固定格式设计,即添加一个固定模板。(tip:短信的内容必须通过在该页面上事先设计好,没办法通过我们的后台代码进行定制,这一点是个遗憾)
   位置短信服务->国内消息->模板管理->添加模板
   注意:发送短信是要收费的,具体每条短信的资费官方可能会隔段时间调整,不过基本都是几分钱一条,所以如果是个人开发者开发写写demo之类的话花个几块钱买100条短信玩玩就差不多了。

   ⑥给开发者账户授权
   地址https://ram.console.aliyun.com/users/
   说明短信开发的时候需要开发者授权,否则当调用后端短信接口的时候会一直报“没有访问权限”的错误
   位置RAM访问控制->人员管理->用户->权限管理->添加权限->选择权限
   所需权限如下图(2个都要)
在这里插入图片描述

   ⑦查看demo极其api文档
   地址https://api.aliyun.com/new?spm=5176.12207334.0.0.15fc1cbeqNcbG2#/
   说明:内含短信服务的后台代码实例并可根据前端表单的数据真实调用接口,页面附api文档,方便查询各字段所代表的意思(这里给的地址是整个api文档的地址,需要在搜索框输入“短信服务”才能列出与短信服务相关的接口文档)。

官方API介绍(含安装、各种参数、错误码说明)

   地址https://help.aliyun.com/document_detail/101300.html?spm=a2c4g.11186623.6.610.3c9e75351YpEZR

阿里云短信服务依赖包安装(这里后端语言使用的是golang)

   源码地址https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/README-CN.md

   使用go命令安装go get -u github.com/aliyun/alibaba-cloud-sdk-go/sdk

   使用glide 依赖安装glide get github.com/aliyun/alibaba-cloud-sdk-go

代码示例(可以参考上面github下面的说明和代码示例,阿里云官网在线demo里面的依赖包和github中的有所不同,但是用法基本是没有区别的)

	//发送短信验证码
	//发送短信验证码
	/**
		请求参数:
		len:短信验证码长度
		expire:短信有效期,以秒为单位
		phone:接收短信的手机号
	
		返回值:
		args1:返回的错误类型
		args2:返回的错误信息(没有则为空串)
 	*/
func SendSMS(len,expire int,phone string)(int,string){

	regionId := beego.AppConfig.String("RegionId")
	accessKeyId := beego.AppConfig.String("AccessKeyId")
	accessKeySecret := beego.AppConfig.String("AccessKeySecret")
	randomNum := RandomNum(len)

	client, err := sdk.NewClientWithAccessKey(regionId, accessKeyId, accessKeySecret)

	errMsg := CheckError(err,"阿里云短信客户端连接失败","阿里云短信客户端连接失败")

	if errMsg != "" {
		return -1,errMsg
	}

	request := requests.NewCommonRequest()
	request.Method = "POST"
	request.Scheme = "https" // https | http
	request.Domain = "dysmsapi.aliyuncs.com"
	request.Version = "2017-05-25"
	request.ApiName = "SendSms"
	request.QueryParams["RegionId"] = "cn-hangzhou"
	request.QueryParams["PhoneNumbers"] = phone	//手机号
	request.QueryParams["SignName"] = "Beluga"	//阿里云注册签名时使用的项目名称(审核必须通过)
	request.QueryParams["TemplateCode"] = "SMS_182679618"	//阿里云注册的短信模板Code(审核必须通过)
	request.QueryParams["TemplateParam"] = "{\"code\":\"" + randomNum + "\"}" //短信模板中的验证码,具体验证码需要我们提供

	response, err := client.ProcessCommonRequest(request)

	errMsg = CheckError(err,"阿里云短信客户端请求发送失败","阿里云短信客户端请求发送失败")

	if errMsg != "" {
		return -1,errMsg
	}

	var smsMessage SmsMessage

	err = json.Unmarshal(response.GetHttpContentBytes(),&smsMessage)

	errMsg = CheckError(err,"阿里云短信信息解析失败","阿里云短信信息解析失败")

	if errMsg != "" {
		return -1,errMsg
	}

	if smsMessage.Message != "OK" {
		//短信发送失败
		return -2,smsMessage.Message
	}

	//短信发送成功,将验证码存入redis并设置5分钟的有效期
	errMsg = RedisSetex(phone,randomNum,expire)

	if errMsg != "" {
		return -1,errMsg
	}

	return 0,errMsg
}

可能遇到的错误

问1:没有访问权限?
答:回顾上面**【阿里云短信服务配置流程下的⑥】**,给开发者授权。

问2:JSON参数不合法?
答:确保request.QueryParams[“TemplateParam”] = “{\“code\":\”123\”}”。
说明:赋值符号右边的值本身是一个字符串,里面的键值对也都是字符串,且必须将双引号表现出来。

问3:账户余额不足?
答:因为阿里云短信平台每发送一条短信都是需要费用的,因此需要先在账户中进行充值,拥有足够的余额之后才能成功发送短信。

问4:模板不合法(不存在或被拉黑)?
答:去短信管理控制台上查看模板Code是否正确或模板是否已通过审核。

问5:短信所使用签名场景非法?
答:就是你所要发送的短信类型的使用场景和签名的使用场景对不上。仔细看代码我们制定了短信的签名和短信模板,签名在注册时需要指定一个使用场景(未上线的应用或网站等默认只有验证码,上线了才有短信通知等场景),注册短信模板时也有短信类型选择(即短信的使用场景)。在我们编写的代码中短信签名的使用场景必须和短信模板码对应的短信模板的使用场景一致,否则会报“短信所使用签名场景非法”。

短信发送记录及产生的短信费用

   地址https://dysms.console.aliyun.com/dysms.htm#/statistic/record

   以上是关于阿里云短信平台的整个使用流程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值