关于微信小程序获取用户唯一码_微信小程序获取设备唯一标识
第一种方式:获取OpenID的流程
-
前端调用
wx.login获取临时凭证code
wx.login({ success: (res) => { if (res.code) { // 将 code 发送到服务器 wx.request({ url: \'https://your-server.com/login\', data: { code: res.code } }); } }});
2.服务器用 code 换取 OpenID
向微信接口 https://api.weixin.qq.com/sns/jscode2session 发送请求:
复制
GET https://api.weixin.qq.com/sns/jscode2session? appid=APPID& secret=SECRET& js_code=CODE& grant_type=authorization_code
-
响应示例:
复制
{ \"openid\": \"USER_OPENID\", \"session_key\": \"SESSION_KEY\", \"unionid\": \"UNIONID\" // 如果满足条件则返回}
实际调用示例:

微信返回:
{errMsg: \"login:ok\", code: \"0c1b7Kll2EeGjf4XUGll2n0VDy1b7KlB\"}
请求接口:
https://api.weixin.qq.com/sns/jscode2session?appid=wx0d69d5e30f63a4d7&secret=a9a51c03e5fd7fd708538e2b3af19ea8&js_code=0c1b7Kll2EeGjf4XUGll2n0VDy1b7KlB&grant_type=authorization_code

结果:获取到用户唯一openId
注意事项:需要小程序管理端生成密钥

OpenID特点:
同一用户在同一小程序中的唯一标识。
不同小程序中的同一用户OpenID不同。
无需用户授权,通过登录流程即可获取。
第二种方式:获取UnionID的流程
通过用户授权解密数据
-
前端获取加密数据:复制
wx.getUserProfile({ desc: \'用于获取UnionID\', success: (res) => { const encryptedData = res.encryptedData; const iv = res.iv; // 发送 encryptedData 和 iv 到服务器 }});
-
服务器解密数据:
使用session_key解密encryptedData,得到包含unionid的用户信息。
代码示例(服务器解密)
const crypto = require(\'crypto\');function decryptData(encryptedData, iv, sessionKey) { const decipher = crypto.createDecipheriv(\'aes-128-cbc\', sessionKey, iv); let decoded = decipher.update(encryptedData, \'base64\', \'utf8\'); decoded += decipher.final(\'utf8\'); return JSON.parse(decoded);}
本地测试代码:

UnionID
同一用户在微信开放平台下的所有应用(小程序、公众号、App等)中的唯一标识。
需满足条件:小程序已绑定到开放平台,且用户在同平台其他应用登录过。
可能需要用户授权才能获取。
缺点需要用户点击按钮才能进行获取数据,不能直接在加载页面进行获取


