Node.js 微信小程式獲取使用者資訊
小程式前端程式碼
// 登入
login(){
wx.login({
success:loginRes => {
if (loginRes.code) {
wx.getUserInfo({
success: user => {
uni.request({
url:"http://192.168.0.22:8666/wxLogin",
method:"POST",
data:{
code:loginRes.code,
encryptedData:user.encryptedData,
iv:user.iv
},
success:reqRes => {
console.log(reqRes)
}
})
}
})
} else {
console.log('登入失敗!' + user.errMsg)
}
}
})
}
node程式碼
需要安裝:
npm install crypto-js
npm install js-base64
注意: appid和secret要換掉 切記無腦copy
/**
*封裝的工具類(可以直接copy使用)
*
*/
const request = require('request')
const CryptoJS = require('crypto-js')
const Base64 = require('js-base64')
const { resolve } = require('path')
class WechatUtil {
constructor() {
this.reqUrl = "https://api.weixin.qq.com/sns/jscode2session"
this.appid = "你的微信小程式appid"
this.secret = "你的微信小程式secret "
this.grant_type = "authorization_code"
this.openId = null
this.sessionKey = null
}
getOpenId(){
return this.openId
}
getSessionKey(){
return this.sessionKey
}
// 獲取 sessionKey openid
getSessionKeyOropenid(code) {
return new Promise((resolve, reject) => {
let url = `${this.reqUrl}?appid=${this.appid}&secret=${this.secret}&js_code=${code}&grant_type=${this.grant_type}`
request.post(url, {}, (error, res, body) => {
if (error) {
console.error(error)
reject(error)
}
if(res.statusCode == 200){
let jsonBody = JSON.parse(body)
this.openId = jsonBody.openId
this.sessionKey = jsonBody.session_key
resolve(this.sessionKey)
}
})
})
}
// 解密獲取使用者資訊
getWechatUserInfo(encryptedData, ivv, sessionKey) {
if(!sessionKey){
sessionKey = this.sessionKey
}
let key = CryptoJS.enc.Base64.parse(sessionKey)
let iv = CryptoJS.enc.Base64.parse(ivv)
let decrypt = CryptoJS.AES.decrypt(encryptedData, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
})
return JSON.parse(Base64.decode(CryptoJS.enc.Base64.stringify(decrypt)))
}
}
module.exports = WechatUtil
呼叫方式
// 微信小程式登入
const WechatUtil = require("../utils/WechatUtil")
const wechatUtil = new WechatUtil()
router.post("/wxLogin", (req, res, next) => {
const { code, encryptedData, iv } = req.body
wechatUtil.getSessionKeyOropenid(code).then(e => {
// 獲取微信使用者資訊
const wechatUserInfo = wechatUtil.getWechatUserInfo(encryptedData, iv)
res.json({
msg: "登入成功",
data: wechatUserInfo
})
}).catch(err => {
res.json({
msg: "授權失敗",
error: err
})
})
})
前端請求結果
相關文章
- 微信小程式 獲取使用者資訊微信小程式
- 微信小程式獲取使用者資訊方法微信小程式
- 微信小程式 getUserProfile 獲取使用者資訊微信小程式
- 微信小程式三種獲取使用者資訊的方式微信小程式
- 微信小程式授權登入獲取使用者資訊微信小程式
- 微信小程式 獲取使用者資訊(wx.getUserInfo)調整微信小程式
- 微信小程式—— 獲取資料微信小程式
- uniapp微信小程式獲取手機號 位置資訊APP微信小程式
- ThinkPHP5-微信小程式獲取使用者授權登入資訊PHP微信小程式
- 微信小程式如何獲取使用者手機號微信小程式
- 微信小程式獲取openid,unionid微信小程式
- uniapp微信小程式獲取定位APP微信小程式
- Laravel 微信小程式獲取『使用者詳細資訊』及『帶引數小程式碼』擴充套件Laravel微信小程式套件
- 企業微信登入獲取使用者資訊
- 微信小程式獲取當前位置微信小程式
- 微信小程式獲取使用者頭像修改為圓形微信小程式
- 微信小程式呼叫騰訊地圖獲取jsonp資料 解析詳細地址資訊微信小程式地圖JSON
- 微信網頁授權並獲取使用者資訊網頁
- 獲取微信小程式頁面路徑微信小程式
- java微信小程式獲取ACCESS_TOKENJava微信小程式
- 微信小程式 獲取微信暱稱頭像 獲取openid 封裝請求post微信小程式封裝
- 根據微信code獲取換取使用者登入態資訊
- 微信小程式如何突破模板訊息限制,獲取多個formId?微信小程式ORM
- 微信小程式獲取index索引值的方法微信小程式Index索引
- JAVA解密微信小程式使用者資訊encryptedData方案Java解密微信小程式
- 獲取微信使用者基本資訊
- 淺談微信小程式用setStorage和getStorage快取和獲取資料微信小程式快取
- 反編譯獲取任何微信小程式原始碼編譯微信小程式原始碼
- 只需兩步快速獲取微信小程式原始碼微信小程式原始碼
- 微信小程式踩坑之獲取手機號微信小程式
- 微信小程式獲取直播間列表方法介紹微信小程式
- 微信小程式直播狀態介面如何獲取微信小程式
- Java解析微信獲取手機號資訊Java
- 微信小程式獲取base64頭像上傳微信小程式
- 獲取微信小程式二維碼並且儲存微信小程式
- 小程式獲取使用者位置資訊後再次手動授權
- 支付寶小程式(後臺)---獲取授權和使用者資訊
- 備忘錄:C#獲取微信小程式的雲資料庫中資料C#微信小程式資料庫