概述:
pip install ronglian_sms_sdk
from ronglian_sms_sdk import smssdk
accid =
'容聯雲通訊分配的主賬號id'
acctoken =
'容聯雲通訊分配的主賬號token'
'容聯雲通訊分配的應用id'
defsend_message()
: tid =
'容聯雲通訊建立的模板id'
mobile =
'手機號1,手機號2'
datas =
('變數1'
,'變數2'
) resp = sdk.sendmessage(tid, mobile, datas)
print
(resp)
說明下,其中的datas對應的是簡訊模板裡的1和2
登入驗證模版您的驗證碼為,請於內正確輸入,如非本人操作,請忽略此簡訊。
class
ccp(
object):
"""傳送簡訊的單例類"""
# _instance = none
def__new__
(cls,
*args,
**kwargs):if
nothasattr
(cls,
"_instance"):
cls._instance =
super()
.__new__(cls,
*args,
**kwargs)
return cls._instance
a = ccp(
)print(id
(a))
b = ccp(
)print(id
(b))
通過這樣的方式獲得的例項共用乙個空間
如果採用傳統方式,則每個例項佔乙個空間,例項不再列舉
簡訊驗證碼傳送:
在libs中新建包:ronglianyun,新建ccp_sms.py檔案,在其中新建傳送模板的單例類
from ronglian_sms_sdk import smssdk
import json
accid =
'8a216d************xx'
acctoken =
'***************x'
'***************************'
class
ccp(
object):
"""傳送簡訊的單例類"""
# _instance = none
def__new__
(cls,
*args,
**kwargs):if
nothasattr
(cls,
"_instance"):
cls._instance =
super()
.__new__(cls,
*args,
**kwargs)
return cls._instance
defsend_message
(self, mobile, datas, tid)
: sdk = self._instance.sdk
resp = sdk.sendmessage(tid, mobile, datas)
result = json.loads(resp)
if result[
'statuscode']==
'000000'
:return
0else
:return
-1
然後在藍圖verify_code.py新建路由:
@api.route(
"/sms_codes/"
)def
get_sms_code
(mobile)
:"""獲取簡訊驗證碼"""
# 獲取引數
# 驗證碼
image_code = request.args.get(
'image_code'
)# uuid
image_code_id = request.args.get(
'image_code_id'
)# 校驗引數
ifnot
all(
[image_code, image_code_id]):
return jsonify(errno=ret.paramerr, errmsg=
'引數不完整'
)# 業務邏輯
# 從redis中取出驗證碼
try:
real_image_code = redis_store.get(
'image_code_%s'
% image_code_id)
except exception as e:
logging.error(e)
return jsonify(errno=ret.dberr, errmsg=
'redis資料庫異常'
)# 判斷驗證碼是否過期
if real_image_code is
none
:return jsonify(errno=ret.nodata, errmsg=
'驗證碼失效'
)# 刪除redis中的驗證碼
try:
redis_store.delete(
'image_code_%s'
% image_code_id)
except exception as e:
logging.error(e)
# print(real_image_code) b'rvmj'
# 與使用者填寫的驗證碼對比
real_image_code = real_image_code.decode(
)if real_image_code.lower(
)!= image_code.lower():
return jsonify(errno=ret.dataerr, errmsg=
'驗證碼錯誤'
)# 判斷手機號的操作
try:
send_flag = redis_store.get(
'send_sms_code_%s'
% mobile)
except exception as e:
logging.error(e)
else
:if send_flag is
notnone
:return jsonify(errno=ret.reqerr, errmsg=
'請求過於頻繁'
)# 判斷手機號是否存在
try:
user = user.query.filter_by(mobile=mobile)
.first(
)except exception as e:
logging.error(e)
else
:if user is
notnone
:# 表示手機號已經被註冊過
return jsonify(errno=ret.dataexist, errmsg=
'手機號已經存在'
)# 生成簡訊驗證碼
sms_code =
"%06d"
% random.randint(0,
999999
)# 儲存真實的簡訊驗證碼到redis
try:
# redis管道
pl = redis_store.pipeline(
) pl.setex(
"sms_code_%s"
% mobile, constants.sms_code_redis_expires, sms_code)
# 儲存傳送給這個手機號的記錄
pl.setex(
'send_sms_code_%s'
% mobile, constants.sned_sms_code_expires,1)
pl.execute(
)except exception as e:
logging.error(e)
return jsonify(errno=ret.dberr, errmsg=
'儲存簡訊驗證碼異常'
)# 發簡訊
try:
ccp = ccp(
) result = ccp.send_message(mobile,
(sms_code,
int(constants.sms_code_redis_expires/60)
),1)
except exception as e:
logging.error(e)
return jsonify(errno=ret.thirderr, errmsg=
'傳送異常'
)# 返回值
if result ==0:
return jsonify(errno=ret.ok, errmsg=
'傳送成功'
)else
:return jsonify(errno=ret.thirderr, errmsg=
'傳送失敗'
)
Flask 簡訊驗證碼 阿里雲服務
目錄 建立client例項 建立api請求並設定引數 發起請求並處理應答或異常 pip install aliyun python sdk core from aliyunsdkcore.client import acsclient from aliyunsdkcore.request impor...
簡訊驗證碼
簡訊驗證碼 圍繞以下兩個方法開展 1 sendcaptcha 獲取驗證碼 2 commitcaptcha 提交驗證碼 方法 1 addtextchangedlistener 文字變化 2 requestfocus 請求焦點 3 string phone etphonenum.gettext tost...
簡訊驗證碼
你的key access key secret 你自己的key 注意 不要更改 region cn hangzhou product name dysmsapi domain dysmsapi.aliyuncs.com acs client acsclient access key id,acces...