最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

微信小程序獲取手機號的踩坑記錄

 更新時間:2021年06月18日 12:12:38   作者:滄海的雨季  
這篇文章主要給大家介紹了關(guān)于微信小程序獲取手機號踩坑的相關(guān)資料,詳細(xì)記錄了踩坑的過程以及解決的方法和猜想,通過示例代碼以及圖片介紹的非常詳細(xì),需要的朋友可以參考下

前言

最近在開發(fā)小程序遇到這樣一個問題, 在用戶點擊授權(quán)后去解密手機號時會出現(xiàn)第一次失敗,第二次成功的情況。研究了一段時間,終于找到比較合理的解決方案,在此記錄并總結(jié)一下,希望可以幫助到大家。

需求描述

在用戶點擊獲取電話按鈕后, 將用戶在微信內(nèi)設(shè)置的電話解密顯示在聯(lián)系電話輸入框內(nèi)

具體代碼

      <view class="cu-form-group">
            <view class="title text-black">聯(lián)系電話</view>
            <input class="radius"  name="mobile"   placeholder="請輸入聯(lián)系電話" value="{{detail.mobile}}" bindinput="onInputMobile"></input>
            <button bindgetphonenumber="getPhoneNumber" class="cu-btn line-blue sm" openType="getPhoneNumber">獲取電話</button>
        </view>

首先需要小程序button組件并設(shè)置 openType="getPhoneNumber"

    onLoad: async function () {
        this.getSessionKey()
    },
    async getSessionKey() {
        const { code } = await wx.login()
        const res = await Index.getSessionKey({
            code
        })
        if (res.code == 1) {
            this.setData({
                session_key: res.data
            })
        }
    },
    getPhoneNumber: async function (e) {
        if (e.detail.errMsg === "getPhoneNumber:ok") {
            const res = await Index.getPhone({
                iv: e.detail.iv,
                encryptedData: e.detail.encryptedData,
                session_key: this.data.session_key
            })
            if (res.err == 0) {
                wx.showToast({
                    title: '網(wǎng)絡(luò)有點兒小波動,請點擊重試',
                    icon: 'none'
                })
                return
            }
            const detail = this.data.detail
            detail.mobile = res.err.phoneNumber
            this.setData({
                detail
            })
        } else if (e.detail.errMsg === "getPhoneNumber:fail user deny") {
            wx.showModal({
                title: '提示',
                content: '你已拒絕授權(quán),請重新點擊并授權(quán)',
                showCancel: false,
                confirmText: "知道了"
            })
        }
    },

在 onLoad生命周期內(nèi)獲取登錄code, 并將code碼發(fā)送給服務(wù)端獲取session_key

服務(wù)端獲取session_key請參考小程序官方文檔。

在用戶點擊獲取電話按鈕后, 將session_key以及獲取到的iv,encryptedData發(fā)送給服務(wù)端進(jìn)行解密。

這樣就可以獲取到用戶的手機號了。


之前我們的方案是, 在用戶點擊獲取電話按鈕后, 直接在getPhoneNumber函數(shù)內(nèi)調(diào)用wx.logon(),將code,iv,encryptedData發(fā)送給服務(wù)端, 服務(wù)端先拿code獲取session_key, 然后和iv,encryptedData結(jié)合進(jìn)行解密,這樣做的話就會出現(xiàn)第一次解密失敗,然后再次點擊按鈕調(diào)用該解密接口就能成功。 而且隔5-6分鐘就又會出現(xiàn)該情況。

當(dāng)調(diào)用wx.checkSession(Object object)檢查登錄態(tài)是否過期也是一直成功的。

猜測

后來想了一下,為什么在getPhoneNumber函數(shù)內(nèi)調(diào)用wx.login, 然后服務(wù)端拿code換session_key,并結(jié)合iv,encryptedData解密不行呢?而把wx.login放進(jìn)onLoad內(nèi)獲取session_key就可以呢?

我想應(yīng)該是在wx.login調(diào)用時會刷新微信服務(wù)器的session_key,直接在getPhoneNumber調(diào)wx.login,或許微信服務(wù)器還沒來得及刷新,服務(wù)端就拿著進(jìn)行解密, 解密時用的還是上次過期的session_key,所以只有第二次以后才能成功。而wx.login放到onload內(nèi),就能來的及session_key了。

總結(jié)

到此這篇關(guān)于微信小程序獲取手機號踩坑的文章就介紹到這了,更多相關(guān)微信小程序獲取手機號內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • DLL+ ActiveX控件+WEB頁面調(diào)用例子

    DLL+ ActiveX控件+WEB頁面調(diào)用例子

    因項目需要,開始學(xué)習(xí)并研究VC、DLL及ActiveX控件,網(wǎng)上資料找了很多,但沒一個可用的或者說沒一個例子可理解并運行的。沒辦法,自己研究吧。功夫不負(fù)有心人,終有小成了,呵呵,現(xiàn)在把自己學(xué)習(xí)總結(jié)了一下,獻(xiàn)給需要的人。
    2010-08-08
  • JS對象數(shù)組中如何匹配某個屬性值

    JS對象數(shù)組中如何匹配某個屬性值

    這篇文章主要介紹了JS對象數(shù)組中如何匹配某個屬性值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 為調(diào)試JavaScript添加輸出窗口的代碼

    為調(diào)試JavaScript添加輸出窗口的代碼

    調(diào)試JavaScript是一件很麻煩的事,盡管有很多很好用的調(diào)試工具,但有時候想要跟蹤值的變化,但即不想中斷腳本執(zhí)行,也不想用alert顯示值信息,這種情況下,一般的做法是在頁面上添加一個DIV或者其它元素,然后再往里面添加調(diào)試信息。
    2010-02-02
  • Js中的Object.entries()基本知識詳細(xì)分析(附Demo)

    Js中的Object.entries()基本知識詳細(xì)分析(附Demo)

    Object.entries方法能將對象的可枚舉屬性轉(zhuǎn)為數(shù)組,每個元素是鍵值對數(shù)組,可用于for...of迭代,下面這篇文章主要介紹了Js中的Object.entries()基本知識的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • js模擬C#中List的簡單實例

    js模擬C#中List的簡單實例

    本篇文章主要是對js模擬C#中List的簡單實例進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-03-03
  • JS 60秒后重新發(fā)送驗證碼的實例講解

    JS 60秒后重新發(fā)送驗證碼的實例講解

    下面小編就為大家?guī)硪黄狫S 60秒后重新發(fā)送驗證碼的實例講解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • JavaScript緩動動畫函數(shù)的封裝方法

    JavaScript緩動動畫函數(shù)的封裝方法

    這篇文章主要為大家詳細(xì)介紹了JavaScript緩動動畫函數(shù)的封裝方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • bootstrap table之通用方法( 時間控件,導(dǎo)出,動態(tài)下拉框, 表單驗證 ,選中與獲取信息)代碼分享

    bootstrap table之通用方法( 時間控件,導(dǎo)出,動態(tài)下拉框, 表單驗證 ,選中與獲取信息)代碼分享

    這篇文章主要介紹了bootstrap table之通用方法( 時間控件,導(dǎo)出,動態(tài)下拉框, 表單驗證 ,選中與獲取信息)代碼分享,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-01-01
  • javascript實現(xiàn)圖片自動和可控的輪播切換特效

    javascript實現(xiàn)圖片自動和可控的輪播切換特效

    這篇文章主要介紹了javascript實現(xiàn)圖片自動和可控的輪播切換特效,效果非常的棒,推薦給大家,有需要的小伙伴可以參考下。
    2015-04-04
  • javascript面向?qū)ο髣?chuàng)建對象的方式小結(jié)

    javascript面向?qū)ο髣?chuàng)建對象的方式小結(jié)

    這篇文章主要介紹了javascript面向?qū)ο髣?chuàng)建對象的方式,結(jié)合實例形式總結(jié)分析了javascript常見的7種創(chuàng)建對象的方式,需要的朋友可以參考下
    2019-07-07

最新評論

宁远县| 宜兰县| 钟祥市| 巫溪县| 宜春市| 钟祥市| 贵南县| 肥东县| 加查县| 吐鲁番市| 黄龙县| 永年县| 荔浦县| 西盟| 七台河市| 白银市| 将乐县| 赤壁市| 桂平市| 射洪县| 通许县| 鹤岗市| 临澧县| 红安县| 铜山县| 津南区| 兴海县| 韶山市| 安徽省| 都兰县| 永新县| 长白| 视频| 铅山县| 土默特右旗| 阿拉尔市| 白银市| 汕头市| 永济市| 项城市| 尼勒克县|