微信小程序如何獲取UnionId詳細版---Crypto.js解密


前言:查看小程序的官方文檔UnionID 機制說明

首先,我沒有公眾號,也不是雲開發,所以只能使用第一種方法調用接口 wx.getUserInfo。
注意!!!一定要先去微信開放平台綁定你的小程序,否則即使解密之后也無法獲取UnionId,切記是微信開放平台,不是微信公眾平台!

其次,由於UnionId是敏感數據,所以單純的wx.getUserInfo是不會返回給你 的,這就需要使用 加密數據解密算法。 官網有提供如何解密的demo,但是居然沒有JavaScript也沒有Java。所以接下來說下純js如何獲取 unionid。

 

 

第一步:登錄微信開放平台 — 管理中心 — 小程序 — 綁定小程序

 

 


第二步:下載解密文件,放入小程序的目錄中,我是放在utils底下。點擊下載提取碼:3ey9 。注意!!路徑需要根據你的實際情況稍加修改。

第三步:wxml文件中綁定事件

<button open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">授權登錄</button>

第四步:js中調用解密方法

//路徑根據你文件存放位置進行修改
var WXBizDataCrypt = require('../../../../utils/WXBizDataCrypt.js');

//微信登錄
getUserInfo: function (e) {
var AppId = '你小程序ID'
var AppSecret = ''小程序密鑰,可以在微信公眾后台--開發--開發設置中找到" 
if (e.detail.iv == undefined) { //如何用戶拒絕授權
wx.showToast({
title: '登錄失敗!',
icon: 'none'
})
return
}
wx.login({ //調用登錄接口,獲取 code
success: function (res) {
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session',
data: {
appid: AppId,
secret: AppSecret,
js_code: res.code,
grant_type: 'authorization_code'
},
success: function (res) {
var pc = new WXBizDataCrypt(AppId, res.data.session_key)
wx.getUserInfo({
success: function (res) {
var data = pc.decryptData(res.encryptedData, res.iv)
console.log('解密數據: ', data)
}
})
}
});
}
})
},

最后:附上我解密后的數據

 

 

!!注意:‘https://api.weixin.qq.com’這個只能在微信開發工具中(不校驗合法域名的情況下)使用,在正式環境中是無法使用的。所以可以讓后端人員請求接口將參數返回回來進行解密,或者直接讓后端解密也行。

 

 

 

 

 

附:感謝蔡-Rd,他的博客里也有提供解密文件下載,但是很多沒用到,所以我刪除了一些不必要的文件。並且在他的基礎上詳細的說了些注意事項。
原文鏈接:https://blog.csdn.net/yanmuchen/article/details/94429358


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM