> 技术文档 > 关于微信小程序获取用户唯一码_微信小程序获取设备唯一标识

关于微信小程序获取用户唯一码_微信小程序获取设备唯一标识


第一种方式:获取OpenID的流程

  1. 前端调用 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等)中的唯一标识。

需满足条件:小程序已绑定到开放平台,且用户在同平台其他应用登录过。

可能需要用户授权才能获取。

缺点需要用户点击按钮才能进行获取数据,不能直接在加载页面进行获取