微信小程序获取用户信息(含服务端)
本文获取用户信息方式需要服务端配合,纯前端的可查看 微信小程序获取用户信息(纯前端)
若需获取 openid
和用户信息,可使用 wx.getUserInfo()
获取加密后的信息,传给服务端后解密。
小程序代码(uni-app 版)
<button type="primary" @click="mpWxLogin">授权登录
</button>
async mpWxLogin() {const {code} = await wx.login();const {encryptedData,iv} = await wx.getUserInfo();// 调用服务端接口const userInfo = await login({code,encryptedData,iv});console.log(JSON.stringify(userInfo, null, 2));
},
服务端代码(node 版)
const crypto = require('crypto')
const axios = require('axios');const appId = '';
const secret = '';/*** 微信小程序授权登录获取session_key* @param {Object} options* @param {String} options.code 小程序code* @param {String} options.encryptedData 可选,存在encryptedData和iv时返回用户信息(包含unionid)* @param {String} options.iv 可选*/
const login = async options => {const {code,encryptedData,iv} = options;let url = 'https://api.weixin.qq.com/sns/jscode2session';url += '?appid=' + appId;url += '&secret=' + secret;url += '&js_code=' + code + '&grant_type=authorization_code';const { data } = await axios.get(url);const userInfo = WXBizDataCrypt({sessionKey: data.session_key,encryptedData,iv})return {session_key: data.session_key,openid: data.openid,userInfo}
}/*** 解密encryptedData 获取unionid* @param {Object} options* @param {String} options.sessionKey* @param {String} options.encryptedData* @param {String} options.iv*/
const WXBizDataCrypt = options => {const appId = wxConfigMp.appId;let {sessionKey,encryptedData,iv} = options;sessionKey = new Buffer(sessionKey, 'base64')encryptedData = new Buffer(encryptedData, 'base64')iv = new Buffer(iv, 'base64')let decoded;try {// 解密let decipher = crypto.createDecipheriv('aes-128-cbc', sessionKey, iv)// 设置自动 padding 为 true,删除填充补位decipher.setAutoPadding(true)decoded = decipher.update(encryptedData, 'binary', 'utf8')decoded += decipher.final('utf8')decoded = JSON.parse(decoded)} catch (err) {throw new Error('Illegal Buffer')}if (decoded.watermark.appid !== appId) {throw new Error('Illegal Buffer')}return decoded
}
其他说明
官网上 wx.getUserProfile()
也能返回 encryptedData 和 iv,但亲测会报appid错误。
如果没有服务端,则可以使用 wx.getUserProfile()
获取用户信息,查看详情
其他服务端语言解密方式可见微信小程序官网
微信小程序获取用户信息(含服务端)相关推荐
- 微信小程序获取用户信息(纯前端)
特别说明 2022年10月25日起,小程序 wx.getUserProfile 接口将被收回. 微信官方不希望开发者直接拿用户的昵称和头像,若小程序需要设置昵称和头像,可以单独开发一个设置页,由用户手 ...
- 微信小程序 获取用户信息并保存登录状态
微信小程序 获取用户信息并保存登录状态:http://www.360doc.com/content/18/0124/11/9200790_724662071.shtml 转载于:https://www ...
- 微信小程序获取用户信息
微信小程序获取用户信息 微信小程序获取用户信息接口做了调整: 2021年4月28日24时后发布的小程序新版本,无法通过wx.getUserInfo与获取用户个人信息(头像.昵称.性别与地区),将直接获 ...
- 微信小程序获取用户信息-头像、昵称......
微信小程序获取用户信息-头像.昵称等,并出现弹窗提示授权 目录 微信小程序获取用户信息-头像.昵称等,并出现弹窗提示授权 1.wx.getUserProfile文档 2.代码演示 3.演示过程(图示) ...
- 微信公众号/微信小程序获取用户信息以及推送微信模版消息_MQ
微信公众号/微信小程序获取用户信息以及推送微信模版消息_MQ 一.获取用户信息 1.首先我们需要了解什么是微信用户的OpenID 在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密 ...
- PHP 微信小程序获取用户信息
小程序授权应用场景:先拿到用户信息(先wx.login获取code,code换取用户session_key,再wx.getuserInfo获取到用户的encryptedData iv ,再通过调用官方 ...
- 微信小程序获取用户信息流程(2022年版)
开门见山地说,本文主要讲述微信小程序在2022年以后获取用户信息的主要方法,如果想要了解2022年之前微信小程序获取用户信息的相关知识或者是微信小程序之前这部分的设计思想的话,推荐博主的下面这篇博客 ...
- 微信小程序获取用户信息,得到是匿名信息,微信用户,问题解决
文章目录 微信小程序获取用户信息,得到是匿名信息,微信用户,问题解决 1.官方声明 2.究其原因 3.登陆流程变更 4.实际情况 5.PC 端兼容注意点 微信小程序获取用户信息,得到是匿名信息,微信用 ...
- 微信小程序获取用户信息更新解决方案
微信小程序获取用户头像和昵称更新了,以下代码是兼容旧版本微信和新版本微信的解决方案,仅供参考 直接上代码 <template><!-- 顶部用户信息显示 --><view ...
最新文章
- CG游戏道具全流程制作视频教程 Artstation – Stylized Game Asset
- ELK不香了!我用Graylog
- Magic Leap不带普通消费者玩了,疫情之下卖身未果,裁员一半求生
- 互联网产品发布之灰度发布
- 魔方机器人需要特制魔方吗_解魔方的机器人攻略18 – 魔方快速算法
- 【已解决】Linux下安装JDK
- 【SICP练习】57 练习2.27
- 猪八戒网的DevOps进化论
- vue 调用移动录像_vue调用摄像头拍照 (移动)2020-11-18
- Gym 101775 D (思维)
- 上位机plc编程入门_上位机-使用C#编程语言编写PLC上位机软件-技术论坛-西门子中国...
- 诱人的 TypeScript 视频教程(69 个视频)
- 2012服务器清理系统盘,windows2012磁盘清理
- 第三方支付机构是什么意思_什么是支付牌照 在哪查看
- 2021-03-23美团面试
- 猜拳php代码,使用JavaScript如何实现猜拳游戏(详细教程)
- 拉依达准则的一个c++实现
- html如何添加时钟效果,HTML5实现时钟效果
- 【计算机网络】IPv6
- ROS自定义消息类型,编译无法生成 msg/srv 文件产生的头文件
热门文章
- lisp绘制棱锥_ICAD命令全集.doc
- Nginx分布式框架
- 送两套外贸童装不仅避免了裁员的风险,出乎预料的是居然还升职了
- ssm vue架构图_ssm+vue前后端分离框架整合实现(附源码)
- 手机版_仿微信 陌陌 安卓版(android)/苹果版(iPhone ios),移动社交APP系统源码,企业即时通讯APP程序源码,手机聊天软件源码,移动聊天APP开发...
- 每日一题Python.1
- GDKOI2016总结
- 蓝桥Python基础——字母图形
- 神舟战神z7摄像头怎么开启_自Z以来的首次旅行和网络摄像头的魔力
- pythonturtle写字_对于Python turtle的学习笔记