• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題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
    當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

    微信小程序授權(quán)登錄及解密unionId出錯(cuò)的方法

    來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:06:58
    文檔

    微信小程序授權(quán)登錄及解密unionId出錯(cuò)的方法

    微信小程序授權(quán)登錄及解密unionId出錯(cuò)的方法:注:沒有在微信開放平臺(tái)做開發(fā)者資質(zhì)認(rèn)證的就不要浪費(fèi)時(shí)間了,沒認(rèn)證無法獲取unionId,認(rèn)證費(fèi)用300元/年,emmmm.... 微信授權(quán)登錄流程 第一步:wx.login獲取 用戶臨時(shí)登錄憑證code 第二步:wx.getUserInfo獲取加密過的數(shù)據(jù)encryptedData和解密參
    推薦度:
    導(dǎo)讀微信小程序授權(quán)登錄及解密unionId出錯(cuò)的方法:注:沒有在微信開放平臺(tái)做開發(fā)者資質(zhì)認(rèn)證的就不要浪費(fèi)時(shí)間了,沒認(rèn)證無法獲取unionId,認(rèn)證費(fèi)用300元/年,emmmm.... 微信授權(quán)登錄流程 第一步:wx.login獲取 用戶臨時(shí)登錄憑證code 第二步:wx.getUserInfo獲取加密過的數(shù)據(jù)encryptedData和解密參

    注:沒有在微信開放平臺(tái)做開發(fā)者資質(zhì)認(rèn)證的就不要浪費(fèi)時(shí)間了,沒認(rèn)證無法獲取unionId,認(rèn)證費(fèi)用300元/年,emmmm....

    微信授權(quán)登錄流程

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

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

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

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

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

    appid:小程序appid

    secret: 小程序密鑰

    js_code: 第一步獲取的臨時(shí)登錄憑證code

    grant_type:'authorization_code'

    接口會(huì)返回 openid, session_key,注意:用戶已經(jīng)授權(quán)過的平臺(tái)還會(huì)返回unionId,如果你只是需要unionId,則到此為止

    官方文檔說法如圖:

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

    包含c++ php python node

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

    以下是授權(quán)登錄前端代碼:

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

    以上步驟可行,但是微信調(diào)整了用戶授權(quán)方式

    新的授權(quán)需用button組件調(diào)用getUserInfo,所以在這之前無法調(diào)用wx.login,但是如果先調(diào)用獲取用戶信息再調(diào)用wx.login的話,解密過程會(huì)出錯(cuò),猜測code對(duì)應(yīng)的session_key和之前getUserInfo獲取的encryptedData不匹配

    解決辦法:

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

    wxml按鈕授權(quán):

    <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)
     }
     })
     },
     // 授權(quán)登錄
     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)
     // 請(qǐng)求完成
     }
     })
     } else {
     console.log('用戶拒絕授權(quán)')
     }
     }

    授權(quán)邏輯修改后實(shí)測沒有出過錯(cuò)

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    微信小程序授權(quán)登錄及解密unionId出錯(cuò)的方法

    微信小程序授權(quán)登錄及解密unionId出錯(cuò)的方法:注:沒有在微信開放平臺(tái)做開發(fā)者資質(zhì)認(rèn)證的就不要浪費(fèi)時(shí)間了,沒認(rèn)證無法獲取unionId,認(rèn)證費(fèi)用300元/年,emmmm.... 微信授權(quán)登錄流程 第一步:wx.login獲取 用戶臨時(shí)登錄憑證code 第二步:wx.getUserInfo獲取加密過的數(shù)據(jù)encryptedData和解密參
    推薦度:
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 日本精品自产拍在线观看中文| 精品无码人妻一区二区三区| 亚洲精品国产精品乱码不卞| 麻豆精品成人免费国产片| 亚洲精品WWW久久久久久 | 久久线看观看精品香蕉国产| 欧洲成人午夜精品无码区久久 | 亚洲精品视频免费| 国产精品主播一区二区| 久久精品国产精品亚洲精品 | 无码人妻丰满熟妇精品区| 麻豆精品| 国产手机在线精品| 99久久精品免费观看国产| 国产一区二区精品| 999久久久免费精品国产| 无码精品日韩中文字幕| 亚洲国产主播精品极品网红| 精品国产一区二区三区AV性色| 亚洲国产精品久久久久网站| 99久久99这里只有免费的精品| 精品亚洲麻豆1区2区3区| 亚洲AV无码精品无码麻豆| 色婷婷久久久SWAG精品| 老司机精品影院91| 欧美日韩精品一区二区三区不卡 | 亚洲精品无码久久不卡| 四虎精品亚洲一区二区三区| 日韩精品无码免费视频| 日韩精品无码久久一区二区三 | 日本一区精品久久久久影院| 99热成人精品热久久669| 99精品一区二区三区无码吞精 | 日韩精品一区二区亚洲AV观看| 亚洲精品老司机在线观看| 亚洲精品亚洲人成在线观看下载| 日本精品夜色视频一区二区| 亚洲国产精品专区在线观看| 亚洲欧洲久久久精品| 伊人久久精品无码二区麻豆| 无码人妻精品一区二区三区东京热|