国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答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
主站蜘蛛池模板: 一边摸一边叫床一边爽 | 欧美精品一区二区三区免费观看 | 国产精品原创视频 | 日韩精品 电影一区 亚洲高清 | 国产视频久久久 | 免费看成人国产一区二区三区 | 日韩欧美一区二区三区四区 | 中文字幕国产欧美 | 图片专区亚洲欧美另类 | 欧美爱爱网站 | 国产99视频精品免费观看7 | 国产一区在线看 | 欧美日韩中文 | 精品国产一区二区二三区在线观看 | 最新国产网址 | 国产激情视频在线 | 国产 欧美 日韩 在线 | 国产成人精品一区 | 日本亲与子乱ay中文 | 亲子交尾五十路 | 国产精品资源在线观看 | 国产日韩在线 | 久久久久久国产精品免费 | 国产欧美一区二区三区鸳鸯浴 | 亚洲图片国产日韩欧美 | 国产一区二区免费视频 | 一级特黄牲大片免费视频 | 国产一区二区三区久久精品 | 91精品国产高清91久久久久久 | 日韩欧美精品在线观看 | 欧美日韩一区二区三区在线播放 | 国产一区二区三区在线看 | 中文日韩欧美 | 2020精品极品国产色在线观看 | 亚洲国产成人精品91久久久 | 欧洲精品欧美精品 | 毛片激情永久免费 | 91一区二区三区四区五区 | 国产一区二区久久久 | 久久永久免费视频 | 国产成人一区二区三区在线播放 |