最近在折腾小程序的node后台,还是处于入门阶段,写一下也让自己深刻记录一下如何获取小程序的openid和uid。
首先需要在在小程序后台获取小程序的appId和AppSecret,然后在小程序获取session_key所需的code。
小程序端代码
wx.checkSession({
success () {
//session_key 未过期,并且在本生命周期一直有效
},
fail () {
// session_key 已经失效,需要重新执行登录流程
wx.login({ // 重新登录
success(res){
let { code } = res; // 获取code登录凭证
wx.getUserInfo({
success(res) {
let { iv, encryptedData } = res; 获取iv和加密的encryptedData
wx.request({
url: `${config.service.host}/openid/`, //发送到服务端接口
method: \'POST\',
data: {
iv,
encryptedData,
code
},
success(res) {
console.log(res); // 返回值
}
})
}
})
}
})
}
})
服务端要发送请求去小程序服务器获取结果,发送请求需要安装koa2-request
yarn add koa2-request
小程序请求地址:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
参数
string appid
小程序 appId
string secret
小程序 appSecret
string js_code
登录时获取的 code
string grant_type
授权类型,此处只需填写 authorization_code
服务端代码
const config = require(\'../config\');
const WXBizDataCrypt = require(\'../WXBizDataCrypt\'); // 解密js
let { appId, AppSecret} = config;
const koa2Req = require(\'koa2-request\');
module.exports = async ( ctx )=> {
let { encryptedData, iv, code } = ctx.request.body;
const res = await koa2Req({
url: `https://api.weixin.qq.com/sns/jscode2session?appid=${appId}&secret=${AppSecret}&js_code=${code}&grant_type=authorization_code`
}) // 如满足条件,这一步就可以获取uid
let body = JSON.parse(res.body);
let { session_key } = body; // 提取session_key解密
let pc = new WXBizDataCrypt(appId, session_key);
var data = pc.decryptData(encryptedData , iv)
ctx.state.data = {
state = \'0001\',
data
}
}
- UnionID获取途径
绑定了开发者帐号的小程序,可以通过下面 4 种途径获取 UnionID。
调用接口 wx.getUserInfo,从解密数据中获取 UnionID。注意本接口需要用户授权,请开发者妥善处理用户拒绝授权后的情况。
如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号。开发者可以直接通过 wx.login + code2Session 获取到该用户 UnionID,无须用户再次授权。
如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用。开发者也可以直接通过 wx.login + code2Session 获取到该用户 UnionID ,无须用户再次授权。
小程序端调用云函数时,当满足 UnionID 获取条件时可在云函数中通过 cloud.getWXContext 获取 UnionID
继续阅读与本文标签相同的文章
上一篇 :
申请专利就象抢红包
-
运营专家详解“花呗分期”
2026-05-18栏目: 教程
-
谈一谈 iOS 的锁
2026-05-18栏目: 教程
-
《Android自定义控件开发入门与实战》| 每日读本书
2026-05-18栏目: 教程
-
除了吃月饼,中秋节还能干啥? | 9月12号栖夜读
2026-05-18栏目: 教程
-
图数据库爱好者的聚会在谈论什么?
2026-05-18栏目: 教程
