flask结合容联云发送验证码
发送短信验证码
- 1. 从容联云中拿出accId,accToken,appId
- 2. 在Flask中安装容联云
- 3. 使用容联云
- 4. 结合使用
- 5. 实际应用,短信注册及登录
1. 从容联云中拿出accId,accToken,appId
注册完容联云之后,找到管理,把里边的对应的accId,accToken,appId都拿出来
拿出来之后找一个空的文件保存下来,以便后续使用
2. 在Flask中安装容联云
在终端输入
pip install ronglian_sms_sdk
安装即可
3. 使用容联云
在根目录下创建一个工具文件夹utils,在创建一个SmsTools的文件
在文件中,实例化,并使用。对于个人的信息(例如:accId,accToken,appId)采取封装处理
import json,redis
from flask import current_app
from ronglian_sms_sdk import SmsSDKclass SmsTool():'''发送短信类'''def __init__(self):accId = current_app.config.get("RL_ACC_ID")accToken = current_app.config.get("RL_ACC_TOKEN")appId = current_app.config.get("RL_APP_ID")self.sdk = SmsSDK(accId, accToken, appId)host=current_app.config.get("REDIS_HOST")port = current_app.config.get("REDIS_PORT")password = current_app.config.get("REDIS_PASSWORD")self.rds = redis.Redis(host=host,port=port,password=password)def send(self,phone,code):'''发送短信接口:param python: 手机号:param code: 验证码:return: Bool 发送成功或失败'''tid= current_app.config.get("RL_TID")t = current_app.config.get("SMS_TIME")print(t)# 把验证码存入rediskey = "sms_%s"%phoneself.rds.set(key,code,ex= t * 60)# 发送短信datas=(code,t)print(tid, phone, datas)rs = self.sdk.sendMessage(tid,phone,datas) # 返回json字符串rs_data = json.loads(rs)if rs_data["statusCode"] == "000000":return Truereturn Falseif __name__ == '__main__':from app import appwith app.app_context():s=SmsTool()rs = s.send("18132317749","6666")print(rs)
创建一个文件对自己的个人信息进行封装
class SecretConfig():RL_ACC_ID = "自己的accid"RL_ACC_TOKEN = "自己的acctoken"RL_APP_ID = "自己的appid"RL_TID = "1"REDIS_HOST = "127.0.0.1"REDIS_PORT = 6379REDIS_PASSWORD = "123456"
4. 结合使用
在蓝图中导入,在蓝图中引用,实例化
class SmsView(Resource):def post(self):req = reqparse.RequestParser()req.add_argument("phone",required= True)args = req.parse_args()code = random.randint(100000,999999)s = SmsTool()rs = s.send(args["phone"],code)if rs:return jsonify({"code": 200,"msg": "发送成功",})return jsonify({"code": 400,"msg": "发送失败"})
5. 实际应用,短信注册及登录
def post(self):# 获取参数req = reqparse.RequestParser()req.add_argument("phone",required=True)req.add_argument("code",required=True)# 校验参数args = req.parse_args()# 校验验证码# 连接redis数据库s = SmsTool()# 根据手机号,拿书出对应的验证码key = "sms_%s" % args["phone"]code_byte = s.rds.get(key) # 返回值是byte类型if not code_byte:return jsonify({"code": 400,"msg": "验证码已经过期"})# 对比if args["code"] != code_byte.decode():return jsonify({"code": 400,"msg": "验证码错误"})return jsonify({"code": 200,"msg": "登录成功"})
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
