999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Pr omise在微信小程序登錄中的應用

2021-05-14 07:15:54周嵐
電腦與電信 2021年3期
關鍵詞:程序微信用戶

周嵐

(江蘇聯(lián)合職業(yè)技術學院徐州財經(jīng)分院,江蘇 徐州 221008)

關鍵字:Promise;異步回調(diào);異步請求;微信小程序

1 引言

微信小程序已被廣泛應用,在使用過程中信息登錄必不可少,那么,在微信小程序登錄過程中獲取微信用戶信息時,需要進行多個有關聯(lián)的異步請求操作,獲取用戶加密信息,然后對其解密并返回。傳統(tǒng)的異步回調(diào)嵌套方法造成程序可讀性差,程序執(zhí)行性能低下。而Promise在Javascript中主要是解決回調(diào)地獄。回調(diào)地獄即異步任務的層層嵌套導致代碼臃腫問題,而Promise鏈式調(diào)用可以很好地解決這種代碼問題,它解決了微信小程序獲取微信用戶信息時多個異步操作請求問題,對異步請求功能劃分更明確,大大提高了程序的可讀性,并提供了良好的錯誤處理邏輯。

2 相關技術

2.1 Promise

ECMAscript 6原生提供了Promise對象。Promise對象代表了未來將要發(fā)生的事件,用來傳遞異步操作的消息。Promise對象有三種狀態(tài):pending,初始狀態(tài);fulfilled,操作成功完成狀態(tài)[1];rejected,操作失敗狀態(tài)。只有異步操作的結果可以決定當前是哪一種狀態(tài),任何其他操作都無法改變這種狀態(tài)。Promise的出現(xiàn)解決了傳統(tǒng)Javascript異步回調(diào)嵌套模式,大大提高了程序的可讀性[2]。比如,通過下面代碼獲取當前日期的程序來模擬Javascript傳統(tǒng)異步回調(diào)操作,具體代碼如下://setTimeout()是屬于window的method,但我們都是略去window這頂層物件名稱,這是用來設定一個時間,時間到了,就會執(zhí)行一個指定的method。

在上面的程序中,要獲取年月日的信息,需要等待3秒鐘才可以返回,代碼嵌套層數(shù)較多,可讀性較差,如果我們采用Promise來改寫,將會大大提高代碼的可讀性,具體代碼如下:

使用Promise來實現(xiàn)Javascript異步操作,對函數(shù)的功能劃分更清晰,大大提高了程序的可讀性。

2.2 微信小程序登錄獲取用戶信息

微信小程序在登錄獲取微信用戶信息時,需要將wx.login()函數(shù)生成code值、APPID和APPSecret發(fā)送到微信服務器,微信服務器將返回用戶信息的加密字符串,然后小程序再次將加密的用戶信息字符串發(fā)送到第三方服務器進行解密并返回用戶的基本信息,具體時序圖如圖1所示。

圖1 微信小程序獲取用戶信息時序圖

當用戶小程序在獲取用戶信息時,尤其是敏感信息,需要先進行wx.login()異步請求操作,當微信服務器返回用戶openID和session_key后,再次進行wx.getUserInfo()請求用戶基本信息,返回的基本信息對敏感信息進行了加密,所以根據(jù)返回的加密信息encryptedData和解密算法的初始向量iv再次請求第三方服務器進行解密操作,最終將用戶信息返回。在進行wx.login()和wx.getUserInfo()有先后的順序,并且在服務端wx.getUserInfo()要用到wx.login()請求返回的session_key,所以在客戶端小程序中采用了Promise按照先后順序依次進行異步請求[3]。

3 具體實現(xiàn)

在微信小程序登錄過程中獲取用戶信息主要分為三步:微信登錄,獲取加密的用戶信息和解密用戶信息。

3.1 微信登錄

當小程序啟動時,首先調(diào)用wx.login()函數(shù),返回用戶openID和session_key,但是根據(jù)官方文檔要求,盡量不要在網(wǎng)絡上傳輸session_key,可以將其保存在服務器端,并將返回的數(shù)據(jù)作為下次異步請求的參數(shù)[4],具體代碼如下:

當請求響應成功后,返回的數(shù)據(jù)格式是Json數(shù)據(jù)格式,包含了openId和請求的code值,在請求獲取用戶信息時作為參數(shù)傳遞進去[5]。

3.2 獲取加密用戶信息

wx.getUserInfo()用戶獲取用戶基本信息時,首先會詢問用戶授權,如果用戶授權同意獲取微信基本信息,將返回用戶的基本信息,但是不包含openId和unionId等敏感信息[6],具體代碼如下:

將getOpenID函數(shù)返回的值以及wx.getUserInfo()返回的userInfo信息作為數(shù)組參數(shù)下一次解密用戶信息的異步請求[7]。

3.3 解密用戶信息

wx.getUserInfo()將返回的encryptedData信息和解密算法的初始向量iv傳遞到服務器端進行解密,具體代碼如下:

當小程序在啟動時,使用Promise實現(xiàn)了獲取用戶基本信息的多個異步請求操作,具體代碼如下:

使用Promise既保證了異步請求的有效性,同時又大大提高了代碼的可讀性。

4 結語

本文通過對Javascript中的Promise對象的介紹,并結合微信小程序在登錄過程中獲取用戶信息的多個異步請求,解決了多個異步請求的順序執(zhí)行,保證了數(shù)據(jù)傳遞的有效性,并有效提高了代碼的可讀性。

猜你喜歡
程序微信用戶
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
微信
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
創(chuàng)衛(wèi)暗訪程序有待改進
微信
微信
主站蜘蛛池模板: 国产地址二永久伊甸园| 亚洲综合网在线观看| 国产自产视频一区二区三区| 国产午夜精品一区二区三区软件| 好久久免费视频高清| 国产精品自在自线免费观看| 亚洲无卡视频| 国产精品亚欧美一区二区| 影音先锋亚洲无码| 国产a v无码专区亚洲av| 毛片大全免费观看| 国产精品免费p区| 国产成在线观看免费视频| 国产91熟女高潮一区二区| 欧美视频在线第一页| 国产在线视频自拍| 黄色污网站在线观看| 亚欧成人无码AV在线播放| 五月婷婷丁香综合| 伊人成人在线| 日韩精品专区免费无码aⅴ| 色婷婷国产精品视频| 在线欧美a| 91外围女在线观看| 999精品视频在线| 欧美日本二区| 久久人搡人人玩人妻精品一| 毛片视频网址| 青青青视频蜜桃一区二区| 无码AV日韩一二三区| 日韩欧美国产精品| 午夜日本永久乱码免费播放片| 青青草国产在线视频| 狠狠色狠狠色综合久久第一次| 久久动漫精品| 亚洲天堂网2014| 99久久婷婷国产综合精| 超碰色了色| 麻豆精品在线视频| 中文字幕久久波多野结衣| 亚洲成aⅴ人在线观看| 色综合狠狠操| 在线免费亚洲无码视频| 日韩大乳视频中文字幕| 亚洲日韩国产精品综合在线观看| 欧美日韩国产成人高清视频| 亚洲系列无码专区偷窥无码| 亚洲第一视频区| 久久激情影院| 亚洲欧州色色免费AV| 九九九精品成人免费视频7| 毛片三级在线观看| 成人永久免费A∨一级在线播放| 91丝袜乱伦| 女人一级毛片| www.日韩三级| 天天躁夜夜躁狠狠躁图片| 超清无码一区二区三区| 欧美人与牲动交a欧美精品| 亚洲国产成人麻豆精品| 动漫精品啪啪一区二区三区| 国产色婷婷| 久久semm亚洲国产| 天天视频在线91频| 宅男噜噜噜66国产在线观看| 国产成人免费视频精品一区二区| 国产欧美专区在线观看| 婷五月综合| 一级毛片在线直接观看| 国产黑丝视频在线观看| 欧美国产三级| 国产色伊人| 91丝袜美腿高跟国产极品老师| 欧美一级夜夜爽www| 免费国产福利| 久青草网站| 精品国产www| 天堂网亚洲系列亚洲系列| 蝴蝶伊人久久中文娱乐网| www.亚洲国产| 亚洲一区波多野结衣二区三区| 久久99这里精品8国产|