知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X(jué)表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
您當(dāng)前位置>首頁(yè) » 新聞資訊 » 小程序相關(guān) >
微信小程序獲取unionID思路整理
發(fā)表時(shí)間:2020-9-24
發(fā)布人:葵宇科技
瀏覽次數(shù):71
小程序能夠獲取到unionid的前提
1.小程序必須綁定在微信開放平臺(tái)上,不綁定是沒(méi)有的(PS:綁定開放平臺(tái)需要開發(fā)者資質(zhì)認(rèn)證,認(rèn)證收費(fèi)的奧)
2.需要微信用戶授權(quán)小程序
具體的代碼實(shí)現(xiàn)(我在index.js的onLoad中實(shí)現(xiàn)的)
encryptedData的解密:模仿 官網(wǎng)給的例子中的 Node 的demo,使用 CryptoJS實(shí)現(xiàn)純 js 下解密用戶信(網(wǎng)上大部分都是用的java服務(wù)器解密的,但是我在調(diào)的時(shí)候,到了解密的那一句時(shí),一直報(bào)錯(cuò)。我們現(xiàn)在用的是直接在微信代碼里解密)
1.加入解密需要的文件,將 CryptoJS 的包放入 小程序的 utils 中(GitHub點(diǎn)擊下載)(RdWXBizDataCrypt.js不在其中需要自己寫,下面有附的代碼,直接復(fù)制即可)
RdWXBizDataCrypt.js
// 引入CryptoJS
var Crypto = require('/cryptojs.js').Crypto;
var app = getApp();
function RdWXBizDataCrypt(appId, sessionKey) {
this.appId = appId
this.sessionKey = sessionKey
}
RdWXBizDataCrypt.prototype.decryptData = function (encryptedData, iv) {
// base64 decode :使用 CryptoJS 中 Crypto.util.base64ToBytes()進(jìn)行 base64解碼
var encryptedData = Crypto.util.base64ToBytes(encryptedData)
var key = Crypto.util.base64ToBytes(this.sessionKey);
var iv = Crypto.util.base64ToBytes(iv);
// 對(duì)稱解密使用的算法為 AES-128-CBC,數(shù)據(jù)采用PKCS#7填充
var mode = new Crypto.mode.CBC(Crypto.pad.pkcs7);
try {
// 解密
var bytes = Crypto.AES.decrypt(encryptedData, key, {
asBpytes: true,
iv: iv,
mode: mode
});
var decryptResult = JSON.parse(bytes);
} catch (err) {
console.log(err)
}
if (decryptResult.watermark.appid !== this.appId) {
console.log(err)
}
return decryptResult
}
module.exports = RdWXBizDataCrypt
2.index.js頁(yè)面中調(diào)用解密演示
index.js
//獲取應(yīng)用實(shí)例
var app = getApp()
var util = require('../../utils/util.js');
var WXBizDataCrypt = require('../../utils/cryptojs/RdWXBizDataCrypt.js');
var appId = '你的微信appid';
var secret = '你的微信secret';
Page({
height="274" src="https://img-blog.csdnimg.cn/20200924145910441.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phY2tpZURZSA==,size_16,color_FFFFFF,t_70" width="1200" />
再補(bǔ)充一下關(guān)于java服務(wù)器的事:
其實(shí)java做的事很簡(jiǎn)單,微信小程序有些接口不能用,比如https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code,這個(gè)接口現(xiàn)在就不能在小程序用了,但是他又是必須的,微信官方就讓咱們用自己的服務(wù)器去用這個(gè)接口。
具體步驟 :
1.小程序請(qǐng)求自己的java服務(wù)器接口
2.java服務(wù)器收到請(qǐng)求,開始請(qǐng)求https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code 這個(gè)接口
3.java服務(wù)器將請(qǐng)求到的數(shù)據(jù)返回給微信小程序
4.完事
對(duì)就這么簡(jiǎn)單,java就做了一個(gè)中間過(guò)度的作用,這樣就起到了安全作用,具體為什么安全我也不知道,官方說(shuō)安全我也這樣說(shuō)了
獲取unionid時(shí)注意


附錄
微信官方文檔
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#%E5%8A%A0%E5%AF%86%E6%95%B0%E6%8D%AE%E8%A7%A3%E5%AF%86%E7%AE%97%E6%B3%95
相關(guān)案例查看更多
相關(guān)閱讀
- 網(wǎng)站建設(shè)百度官方
- 前端
- 云南小程序代建
- 云南網(wǎng)絡(luò)公司
- Web開發(fā)框架
- 云南網(wǎng)站建設(shè)哪家公司好
- php網(wǎng)站
- 云南小程序開發(fā)制作公司
- 云南衛(wèi)視小程序
- 報(bào)廢車回收管理軟件
- 搜索排名
- 云南網(wǎng)站建設(shè)高手
- 全國(guó)前十名小程序開發(fā)公司
- 云南網(wǎng)站建設(shè)服務(wù)公司
- 云南省住房建設(shè)廳網(wǎng)站
- 云南小程序設(shè)計(jì)
- 云南小程序開發(fā)報(bào)價(jià)
- 云南軟件定制公司
- typescript
- 云南百度小程序
- 公眾號(hào)模板消息
- 昆明小程序公司
- web開發(fā)技術(shù)
- 云南建站公司
- 關(guān)鍵詞快速排名
- 網(wǎng)站建設(shè)需要多少錢
- 高端網(wǎng)站建設(shè)公司
- 云南省建設(shè)廳網(wǎng)站官網(wǎng)
- 網(wǎng)站建設(shè)公司地址
- 云南手機(jī)網(wǎng)站建設(shè)