<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
        主站蜘蛛池模板: 韩国免费一级成人毛片| 亚洲狠狠爱综合影院婷婷| 国产一卡二卡3卡四卡免费| 国产精品国产亚洲精品看不卡| 亚洲毛片无码专区亚洲乱| 亚洲av午夜电影在线观看 | 亚洲国产精品免费视频| 亚洲精品天堂成人片AV在线播放 | 视频免费在线观看| 24小时日本在线www免费的| 中文字幕专区在线亚洲| 77777亚洲午夜久久多喷| 免费网站观看WWW在线观看| 日本二区免费一片黄2019| 亚洲网址在线观看| 五月亭亭免费高清在线| 国产亚洲AV夜间福利香蕉149| 亚洲av乱码一区二区三区香蕉| 最近免费中文字幕中文高清| 亚洲精品国产精品乱码不卡√| 精品特级一级毛片免费观看| 国产1024精品视频专区免费| 4480yy私人影院亚洲| 99久久婷婷免费国产综合精品| 久久亚洲国产欧洲精品一| 免费A级毛片无码A∨| 亚洲大成色www永久网站| 1000部羞羞禁止免费观看视频 | 亚洲 国产 图片| 亚洲国产精品美女久久久久| 亚洲A丁香五香天堂网| 亚洲精品无播放器在线播放| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 免费黄色app网站| 亚洲Av无码一区二区二三区| 免费看片A级毛片免费看| 中文字幕久无码免费久久| 亚洲伊人成无码综合网| 久久久久久成人毛片免费看| 亚洲AV无码专区电影在线观看| 久久精品国产免费|