flask结合容联云发送验证码

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 SmsSDK

class 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)
        # 把验证码存入redis
        key = "sms_%s"%phone
        self.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 True
        return False

if __name__ == '__main__':
    from app import app
    with 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 = 6379
    REDIS_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": "登录成功"
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值