node+express实现微信登录和获取手机号

一、安装request依赖

npm install request --save

二、在微信公众平台下载解密算法
点击下载
在这里插入图片描述

三、通过code获取用户openid
微信登录:获取到openid后返回给前端获取用户信息,然后前端再带着数据请求接口,后台生成token返回给前端登录
获取手机号:前端拿到加密数据后返回给后台,后台通过解密文件进行解密后返回给前端

const request = require('request');

//从微信下载的WXBizDataCrypt解密文件
var WXBizDataCrypt = require('../../utils/WXBizDataCrypt.js')

//全局变量
let appid = "xxxxxx";//自己小程序后台管理的appid,可登录小程序后台查看
let secret = "xxxxxx";//小程序后台管理的secret,可登录小程序后台查看
let grant_type = "authorization_code";// 授权(必填)默认值
let sessionKey = null;
let openid = null;
let code = '';//获取小程序传来的code

//微信获取openid
router.post('/wxGetOpenid', function (req, res) {
	if(req.body.code == ''){
		res.send($commonJS.returnMsg(0,'','必填项不可为空'));
		return;
	}
	code = req.body.code;
	
	//请求微信端接口获取openid
	request("https://api.weixin.qq.com/sns/jscode2session?grant_type="+grant_type+"&appid="+appid+"&secret="+secret+"&js_code="+code, (error, response, body)=>{
		if(response.statusCode == 200){
			sessionKey = JSON.parse(body).session_key;
			openid = JSON.parse(body).openid;
		}
	})
});

//解密手机号
router.post('/getPhone', (req, res) => {
	let reqData = req.body;
	let headers = req.headers;
	
	let bizDataCrypt = new wxBizDataCrypt(appid, reqData.sessionKey)
	const data = bizDataCrypt.decryptData(reqData.encryptedData, reqData.iv)
	if (Object.keys(data).length > 0) {
		res.send($commonJS.returnMsg(1,data,'获取手机号码成功'));
	} else {
		res.send($commonJS.returnMsg(0,'','获取失败,请重新授权'));
	}
})
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值