阿里雲簡訊驗證碼服務
阿新 • • 發佈:2020-07-19
阿里雲簡訊驗證碼介面的使用
安裝python核心SDK庫(推薦用新版)
舊版:pip install aliyun-python-sdk-core3
新版:pip install aliyun-python-sdk-core-v3
建立簽名
建立AccessKey
AccessKey ID
與 AccessKey Secret
後面會用到
搜尋阿里雲的簡訊服務
獲取官方提供的demo
官方提供的DEMO如下
from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest client = AcsClient('<accessKeyId>', '<accessSecret>', 'default') request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', "default") request.add_query_param('PhoneNumbers', "接收驗證碼的手機號") request.add_query_param('SignName', "你的簽名名稱") request.add_query_param('TemplateCode', "你的模版CODE") response = client.do_action(request) # python2: print(response) print(str(response, encoding = 'utf-8'))
將程式碼寫成一個公共方法以便我們使用
# checkCode.py from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest def send_sms(template, mobile): client = AcsClient('你的AccessKey ID', '你的Access Key Secret', 'default') request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http 注意當專案釋出到伺服器上需要修改協議 request.set_version('2017-05-25') # set_action_name 選擇呼叫的介面的名稱,如:SendSms,SendBatchSms等 request.set_action_name('SendSms') request.add_query_param('RegionId', "default") # 98A66994-3DF4-4FA5-A33F-CCB36EB599D0 # request.add_query_param('RegionId', "cn-hangzhou") request.add_query_param('PhoneNumbers', mobile) # 傳送的人 request.add_query_param('SignName', "你的簽名名稱") # 簽名 request.add_query_param('TemplateCode', "你的模板編號") # 模板編號 request.add_query_param('TemplateParam', f"{template}") # 傳送驗證碼內容 response = client.do_action_with_exception(request) # response = client.do_action(request) # # python2: print(response) # print(str(response, encoding='utf-8')) return response
使用公共方法
code = "%06d" % random.randint(0, 999999) # 將驗證碼存入session request.session['sms'] = code template = { 'code': code, } res = send_sms(template, mobile) # res_dict = json.loads(res) if res_dict.get('Message') == 'OK' and res_dict.get('Code') == 'OK': return APIResponse('ok') else: return APIResponse(status=0, msg='error')