python之tx_SDK 3.0短信验证码sdk配置使用

环境:

python 3.9

python sdk3.0

支持的python环境
python之tx_SDK 3.0短信验证码sdk配置使用_第1张图片

前期准备:

创建短信签名、短信模板、应用,就不赘述了,官网有指引,一步步按照提示操作即可;

sdk3.0校验使用的是密钥对,所以还需要创建一个密钥对(​ ​ https://console.cloud.tencent...​​)

配置如下:

其实官方已经给出了配置步骤,由于是测试使用,也就没有过多的配置,把一些必要的配置上,非必要的直接不要了;本人也是刚使用短信验证码的sdk,了解的并不深入,目前用的是python sdk,请各位大佬多多指教;

写成模块形式,简单使用的,也可以直接单页面去写

短信发送模块tx_sms/send.py:

from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.sms.v20210111 import sms_client, models

from . import settings
import json
import random

# 获取四位随机验证码
def get_code():
    s_code = ''
    for i in range(4):
        s_code += str(random.randint(0,9))
    return s_code

# 发送短信 ,腾讯短信验证码sdk 3.0
def send_message(telephone, code):
    try:
        telephone = f'+86{telephone}'

        # 实例化认证对象,传入腾讯云账户密钥对
        cred = credential.Credential(settings.secretId,
                                     settings.secretKey)

        # 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,支持的地域列表参考 https://cloud.tencent.com/document/api/382/52071#.E5.9C.B0.E5.9F.9F.E5.88.97.E8.A1.A8
        client = sms_client.SmsClient(cred, "ap-guangzhou")

        # 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
        req = models.SendSmsRequest()

        params = {
            "PhoneNumberSet": [telephone, ],  # 下发手机号码,采用 E.164 标准,+[国家或地区码][手机号]
            "SmsSdkAppId" : settings.appid,  # 短信应用ID
            "SignName" : settings.sms_sign,  # 短信签名内容
            "TemplateId" : settings.template_id,  # 模板 ID
            "TemplateParamSet" : [code, settings.Exp_interval], # 模板参数
        }
       

        req.from_json_string(json.dumps(params))
        resp = client.SendSms(req)

        # 输出json格式的字符串回包
        print(resp.to_json_string(indent=2))
        if resp:
            return True
        else:
            return False

    except TencentCloudSDKException as err:
        print(err)  # 这里的异常捕获处理,逻辑可以自己按需写

短信配置,tx_sms/settings.py

# 密钥对
secretId = "粘贴自己的"
secretKey = "粘贴自己的"

# 短信应用 SDK AppID
appid = "粘贴自己的"  # SDK AppID 以1400开头

# 验证码失效时间间隔
Exp_interval = "3"  # 表示三分钟内有效

# 短信模板ID,需要在短信控制台中申请
template_id = "粘贴自己的"  # NOTE: 这里的模板 ID`7839` 只是示例,真实的模板 ID 需要在短信控制台中申请

# 签名
sms_sign = "粘贴自己的"  # NOTE: 签名参数使用的是`签名内容`,而不是`签名ID`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台中申请

接下来就是调用get_code、send_message两个函数来进行发送验证码,我这里用的是drf框架,只是用来测试sdk的配置,随便用python写一个函数也行

views.py

# 发送验证码
from rest_framework.viewsets import ViewSet
class SendCodeView(ViewSet):
    # 发送验证码
    @action(methods=['GET'], detail= False)
    def send_code(self, request, *args, **kwargs):
        telephone = request.query_params.get('telephone')
        code = get_code()
        result = send_message(telephone, code)
        
        if result:
            return APIResponse(code= 1, msg= '验证码发送成功')
        else:
            return APIResponse(code= 0, msg= '验证码发送失败')

配置一下路由urls.py

from django.urls import path, re_path, include
from apps.user import views
from rest_framework.routers import SimpleRouter

router = SimpleRouter()
router.register('', views.SendCodeView, 'send_code')

urlpatterns = [
    path('', include(router.urls)),
]

最后就是去调用自己写的接口,发送验证码了
python之tx_SDK 3.0短信验证码sdk配置使用_第2张图片

以上就是本次分享的全部内容,现在想要学习编程的小伙伴欢迎关注Python技术大本营,获取更多技能与教程。

你可能感兴趣的:(python)