本文為您詳細介紹H5頁面接入網頁端SDK的方式及本機號碼校驗相關方法的說明。
在使用過程中如有疑問,可以提交工單聯系阿里云技術工程師處理。
SDK接入方式
下載SDK
登錄號碼認證產品控制臺,在概覽頁面右側API&SDK區域,單擊立即下載,進入API&SDK頁面,根據頁面提示下載并解壓對應SDK。
創建認證方案
您導入項目或調用API接口時,會用到方案Code等參數信息,請先在號碼認證產品控制臺,創建認證方案,獲取方案Code等參數信息。
開始集成
支持兩種集成網頁端SDK的方法,您可任選其中一種:
靜態資源引入。
將網頁端SDK上傳到您的靜態資源服務器上,獲取能夠訪問到網頁端SDK的URL,通過
script
標簽的方式引入。<script type="text/javascript" charset="utf-8" src="${your-sdk-asset-path}/numberAuth-web-sdk.js"></script>
npm包引入。下載npm資源,將
aliyun_numberauthsdk_web
包添加為項目依賴。// 下載npm資源并添加依賴到package.json npm i aliyun_numberauthsdk_web -S
注意事項
在調用SDK之前,務必確保對應的SDK依賴文件已經提前引入。
不可在業務代碼中覆蓋
window.PhoneNumberServer
變量。認證之前確保您的終端設備已關閉Wi-Fi連接且開啟了SIM卡的4G移動數據網絡(支持中國聯通、中國移動的3G網絡,但接口耗時會增加)。
交互流程詳解
本機號碼校驗交互流程主要分為三個步驟:初始化、獲取認證參數、號碼校驗。
注:上圖為完整的交互流程時序圖。
初始化。
用戶訪問H5頁面,H5頁面調用服務端集成的GetAuthToken - 獲取 H5 認證授權 Token接口獲取授權Token(包括業務鑒權accessToken和API鑒權jwtToken兩個參數)。
H5頁面調用SDK的
checkAuthAvailable
方法發起身份鑒權。
獲取認證參數。
身份鑒權通過,H5頁面調用SDK的
getVerifyToken
方法獲取號碼認證spToken。
號碼校驗。
用戶輸入需要驗證的手機號。
H5頁面攜帶獲取到的spToken和用戶輸入的手機號,向服務端發起認證請求。
服務端調用集成的VerifyPhoneWithToken - 本機號碼校驗(H5能力專用)接口獲取認證結果,判斷用戶輸入的手機號碼與用戶終端當前訪問網絡的手機號碼是否一致。
返回校驗結果給H5頁面。
方法說明
初始化實例
const phoneNumberServer = new PhoneNumberServer();
checkAuthAvailable(本機號碼校驗鑒權接口)
調用該接口之前,請在服務端調用GetAuthToken接口,獲取本機號碼校驗鑒權接口所需的accessToken和jwtToken。
方法參數
參數名稱 | 參數類型 | 是否必填 | 參數說明 |
success | function | 是 | 成功回調。回調函數入參請參見success/error回調函數入參。 |
error | function | 是 | 失敗回調。回調函數入參請參見success/error回調函數入參。 |
accessToken | string | 是 | 號碼認證業務鑒權Token由阿里云對外暴露的getAuthToken接口生成。 說明 accessToken過期時間是10分鐘,有效期內可以重復使用。 |
jwtToken | string | 是 | API鑒權Token由阿里云對外暴露的getAuthToken接口生成。 說明 jwtToken過期時間是1小時,有效期內可以重復使用。 |
timeout | number | 否 | 接口的請求超時時間,默認10秒。 |
success/error回調函數入參
參數名稱 | 參數說明 |
code | 返回的狀態碼。
|
requestId | 本地調用的唯一ID,根據此ID可查詢相關日志。 |
content | SDK服務端返回的結果傳給用戶,方便用戶定位問題。 |
msg | 對返回結果的描述。 |
調用示例
// 調用之前先去用戶服務端獲取AccessToken和JwtToken
phoneNumberServer.checkAuthAvailable({
accessToken: "XXXXXXXXXX",
jwtToken: "******",
success: function (res) {
console.log(res);
if (res.code === 600000) {
// 在此調用getVerifyToken接口
}
},
error: function (res) {
// 提示用戶關閉Wi-Fi或者嘗試其他登錄方案
},
});
getVerifyToken(獲取本機號碼校驗Token接口)
在checkAuthAvailable成功回調中調用此接口。
方法參數
參數名稱 | 參數類型 | 是否必填 | 參數說明 |
success | function | 是 | 成功回調。回調函數入參請參見success/error回調函數入參。 |
error | function | 是 | 失敗回調。回調函數入參請參見success/error回調函數入參。 |
timeout | number | 否 | 接口的請求超時時間,默認25秒。 |
success/error回調函數入參
參數名稱 | 參數說明 |
code | 返回的狀態碼。
|
spToken | 運營商Token。 |
content | 失敗時運營商返回的內容。 |
requestId | 本地調用的唯一ID,根據此ID可查詢相關日志。 |
調用示例
phoneNumberServer.getVerifyToken({
success: function (res) {
console.log(res);
// 獲取到用戶輸入的手機號+spToken校驗本機號碼
},
error: function (res) {},
});
getVersion(獲取SDK版本號)
const phoneNumberServer = new PhoneNumberServer();
const sdkVersion = phoneNumberServer.getVersion(); // 返回SDK版本號 eg: '1.0.0'
getConnection(網絡類型檢查接口)
網絡類型檢查接口,您可自行選擇是否調用,對認證流程無阻礙。
此接口會判斷當前用戶的網絡類型: Wi-Fi(wifi)、移動數據網絡(cellular)、unknown。
重要未開啟移動數據網絡的用戶無法通過一鍵登錄完成認證。
提前獲取用戶的網絡類型,攔截使用Wi-Fi網絡的用戶,及時終止認證流程,節約資源并提升用戶的認證體驗。
建議認證前調用此接口,對netType為wifi的用戶提醒關閉Wi-Fi或者提供其他認證方式,對于netType為unknown和cellular的用戶繼續一鍵登錄流程。
const phoneNumberServer = new PhoneNumberServer();
const netType = phoneNumberServer.getConnection();
// console.log(netType);
// netType的值為wifi(Wi-Fi)、cellular(流量)、unknown(未知)
sendLoggerEnable(設置開啟日志)
isEnable:是否開啟,true為開啟,false為不開啟。
const phoneNumberServer = new PhoneNumberServer();
phoneNumberServer.setLoggerEnable(true);