<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        微信小程序授權登錄及解密unionId出錯的方法

        來源:懂視網 責編:小采 時間:2020-11-27 22:06:58
        文檔

        微信小程序授權登錄及解密unionId出錯的方法

        微信小程序授權登錄及解密unionId出錯的方法:注:沒有在微信開放平臺做開發者資質認證的就不要浪費時間了,沒認證無法獲取unionId,認證費用300元/年,emmmm.... 微信授權登錄流程 第一步:wx.login獲取 用戶臨時登錄憑證code 第二步:wx.getUserInfo獲取加密過的數據encryptedData和解密參
        推薦度:
        導讀微信小程序授權登錄及解密unionId出錯的方法:注:沒有在微信開放平臺做開發者資質認證的就不要浪費時間了,沒認證無法獲取unionId,認證費用300元/年,emmmm.... 微信授權登錄流程 第一步:wx.login獲取 用戶臨時登錄憑證code 第二步:wx.getUserInfo獲取加密過的數據encryptedData和解密參

        注:沒有在微信開放平臺做開發者資質認證的就不要浪費時間了,沒認證無法獲取unionId,認證費用300元/年,emmmm....

        微信授權登錄流程

        第一步:wx.login獲取 用戶臨時登錄憑證code

        第二步:wx.getUserInfo獲取加密過的數據encryptedData和解密參數iv

        第三步:把步驟一、二中的code、encryptedData、iv傳到開發者自己服務端

        第三步:服務端獲取到code、encryptedData、iv之后用get方法請求如下微信接口

        https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

        appid:小程序appid

        secret: 小程序密鑰

        js_code: 第一步獲取的臨時登錄憑證code

        grant_type:'authorization_code'

        接口會返回 openid, session_key,注意:用戶已經授權過的平臺還會返回unionId,如果你只是需要unionId,則到此為止

        官方文檔說法如圖:

        沒有授權過則用encryptedData、session_key、iv、appid、secret進行解密,官方多語言解密示例下載鏈接:
        unionId解密示例

        包含c++ php python node

        第四步:仿照示例解密后獲得unionId,想做什么就做什么了~

        以下是授權登錄前端代碼:

        authLogin () {
         wx.login({
         success: loginRes => {
         let code = loginRes.code // 獲取用戶臨時code
         wx.getUserInfo({
         success: function (res) {
         let encryptedData = res.encryptedData // 獲取加密數據
         let iv = res.iv // 解密參數
         // 發送解密必要數據到服務端
         wx.request({
         url: 'http://localhost',
         methods: 'POST',
         data: {
         code: code,
         encryptedData: encryptedData,
         iv: iv
         },
         succeess: res => {
         // 服務端首先調用微信接口獲取session_key
         // 用戶已經授權過的平臺會直接返回unionId
         // 沒有授權過則用session_key進行解密
         // 解密成功后服務端根據邏輯返回自定義信息
         }
         })
         }
         })
         }
         })
         }

        以上步驟可行,但是微信調整了用戶授權方式

        新的授權需用button組件調用getUserInfo,所以在這之前無法調用wx.login,但是如果先調用獲取用戶信息再調用wx.login的話,解密過程會出錯,猜測code對應的session_key和之前getUserInfo獲取的encryptedData不匹配

        解決辦法:

        在頁面的onLoad生命周期里調用wx.login,獲取的code存入data以備需要的時候使用,但是code失效時間為5分鐘,如果用戶停留頁面時間過長后點擊授權登錄,此時的code已經過期了,所以,獲取code的函數應該每4分鐘左右調用一次

        wxml按鈕授權:

        <button open-type='getUserInfo' bindgetuserinfo="authLogin">微信登錄</button>

        js:

         // 獲取code
         onLoad: function (options) {
         this.getCodeTimer()
         },
         getCodeTimer () {
         wx.login({
         success: res => {
         this.data.code = res.code
         setTimeout(() => {
         this.getCodeTimer()
         }, 4 * 60 * 1000)
         }
         })
         },
         // 授權登錄
         authLogin(event) {
         if (event.detail.errMsg == 'getUserInfo:ok') {
         wx.showLoading()
         let reqData = {
         code: this.data.code,
         encryptedData: event.detail.encryptedData,
         iv: event.detail.iv
         }
         wx.request({
         url: 'http://localhost:8080',
         methods: 'POST',
         data: reqData,
         success: (res) => {
         console.log(res)
         // 請求完成
         }
         })
         } else {
         console.log('用戶拒絕授權')
         }
         }

        授權邏輯修改后實測沒有出過錯

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        微信小程序授權登錄及解密unionId出錯的方法

        微信小程序授權登錄及解密unionId出錯的方法:注:沒有在微信開放平臺做開發者資質認證的就不要浪費時間了,沒認證無法獲取unionId,認證費用300元/年,emmmm.... 微信授權登錄流程 第一步:wx.login獲取 用戶臨時登錄憑證code 第二步:wx.getUserInfo獲取加密過的數據encryptedData和解密參
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 精品女同一区二区三区免费站| 久久国产精品免费观看| 亚洲乱亚洲乱少妇无码| 精品亚洲AV无码一区二区三区| 日本一道本高清免费| 永久免费不卡在线观看黄网站| 久久亚洲AV无码西西人体| 色吊丝免费观看网站| 国产男女猛烈无遮挡免费视频网站| 久久久久久久国产免费看| 亚洲美女视频网站| 亚洲国产精品日韩| 99久久久精品免费观看国产| 一区二区免费国产在线观看 | 婷婷久久久亚洲欧洲日产国码AV | 毛色毛片免费观看| 巨胸喷奶水视频www免费视频| 国产成人精品曰本亚洲79ren| 69堂人成无码免费视频果冻传媒| 一个人看www免费高清字幕| 激情亚洲一区国产精品| 亚洲成AV人在线播放无码| 免费国产在线观看不卡| 午夜性色一区二区三区免费不卡视频| 亚洲精品在线电影| 啦啦啦高清视频在线观看免费| 亚美影视免费在线观看| 亚洲AV永久无码精品成人| 男女啪啪永久免费观看网站| 91av免费观看| 国产一级黄片儿免费看| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 亚洲成a人片在线观看无码专区| 国产色爽免费视频| 国产一卡二卡3卡四卡免费| 人人揉揉香蕉大免费不卡| av成人免费电影| 青青久久精品国产免费看| 亚洲av午夜电影在线观看 | 久久这里只精品99re免费| 一区二区三区视频免费|