使用 Twilio Python SDK 打造簡訊兩步驟驗證服務

PeerOne CTO
PeerOne Technology 皮偶玩互動科技
5 min readNov 29, 2020

隨著網路越來越普及,資訊安全的重要性是軟體公司與客戶共同面臨的課題,許多雲端服務都推出甚至強制使用 Two-Factor Authentication 提升帳號的安全性,今天將示範如何使用 Twilio 的 SDK 打造簡訊的兩階段驗證。

Twilio

Twilio 是一間美國的軟體公司,專注於雲端通訊服務,提供了包括簡訊傳送及驗證、email驗證、影音串流等等 API,價格也非常透明,也會提供試用的額度給開發者進行使用。

建立並設定專案

申請 Twilio 帳號

進入官網先申請一個帳號。

建立 Project

進入 Twilio console 點選「create project」,並填寫一些簡單的資訊(包括使用的程式語言等等),建立完成後可以看到以下的畫面,並且得到試用額度(Trial Balance)。

請複製記下圖中的 ACCOUNT SID 與 AUTH TOKEN,等等會使用到。

建立 Verify Service

左頁選單點選第二個(圓形裡面有三個點的圖示),選擇子標籤裡面的 Enagement Cloud 中的 Verify。

進去之後,點選紅色加號,建立一個新的service(名字隨便取即可)。

建立完成會進入 General Setting,可以在 「CODE LENGTH」設定驗證碼的長度,請複製記下 SERVICE SID,等等會使用。

專案到這裡就設定完畢了。

程式碼實作

本教學使用 Python 進行測試。

安裝 twilio SDK

使用 pip 進行安裝。

pip install twilio

建立 Client 實例

from twilio.base.exceptions import TwilioRestException
from twilio.rest import Client # import 套件
account_sid = "ACCOUNT SID" # 請填寫剛剛紀錄的 ACCOUNT SID
auth_token = "AUTH TOKEN" # 請填寫剛剛紀錄的 AUTH TOKEN
# 建立 client instance
client = Client(account_sid, auth_token)

寄送驗證碼

phone_number = '+886xxxxxxxxx'  # 請填寫收驗證碼的手機號碼client.verify \
.services(service_sid) \
.verifications \
.create(to=phone_number, channel='sms')
# service_sid 請填寫剛剛紀錄的 SERVICE_SID

核對驗證碼

# handle twilio 可能引發的 exceptionsphone_number = '+886xxxxxxxxx'
verification_code = 'xxxxxx' # 長度根據 service setting 的 CODE LENGTH
try:
client.verify \
.services(service_sid) \
.verification_checks \
.create(to=phone_number, code=verification_code)
# 核對無誤則不會發生 exception
# service_sid 請填寫剛剛紀錄的 SERVICE_SID
except TwilioRestException as e:
pass # do something...

結語

隨著雲端服務越來越普及,許多功能可以非常方便地直接使用套件,使用這些服務商的服務也許需要付費,然而使用這些品質穩定的服務,可以替公司的工程師節省不少開發及維護的時間,讓工程師可以更加專注於產品的功能上。

註:Twilio 可以直接在官網上看到公開的價格表,一封驗證簡訊約為 0.05 美金,然而量大的時候可以直接跟他們的業務談到更優惠的價格。

--

--