微信小程序+nodeJs+express+mongodb踩坑记录 4、uniAPP wx小程序登录前端+后台实现_nodejsmongodb微信小程序论文

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

			}
		});
	},
	//向后台更新信息
	updateUserInfo(info,openInfo) {
		const { avatarUrl, city, country, gender,language, nickName, province} = info
		const { _id } = openInfo.data
		let _this = this;
		this.$api.login({avatarUrl, city, country, gender,language, nickName, province, _id}).then(res=>{
			if(res.data.isSuccess){
				_this.$store.commit('SET\_STATE',['userInfo',res.data.data])
				_this.$store.commit('SET\_STATE',['token',res.data.data.token])
				uni.setStorageSync('token',res.data.data.token)
				_this.$refs.uToast.show({
					title: '登录成功',
					type: 'success',
				});
			}else{
				_this.$refs.uToast.show({
					title: '登录失败',
					type: 'fail',
				});
			}
			setTimeout(()=>{
				uni.navigateBack()
			},1500) 
		})
		
	}
}

};


四、node后端代码实现



> 
> 后台接口采用node+express+mongoose
> 
> 
> 


* 获取openid并创建用户接口



//获取openId的时候,查询用户是否存在,不存在则创建用户,反之更新令牌
var express = require(‘express’);
var router = express.Router();
const User = require(‘./…/model/user’)
const { createToken, verifyToken } = require(‘./…/utils’)

const { WX_CONFIG } = require(‘./…/utils/config’)
// querystring这个模块,用来做url查询参数的解析
const querystring = require(‘querystring’);
const request = require(‘request’);
/**
* @name: 获取微信用户的openId
* @param {string} code 微信小程序授权后返回的code
* @Author: 471826078@qq.com
*/
router.post(‘/getOpenId’, (req, res, next) => {
const data = {
‘appid’: WX_CONFIG.appId,
‘secret’: WX_CONFIG.appScrect,
‘js_code’: req.body.code,
‘grant_type’: ‘authorization_code’
}
// querystring的stringify用于拼接查询
var content = querystring.stringify(data);
// 根据微信开发者文档给的API
var url = ‘https://api.weixin.qq.com/sns/jscode2session?’ + content;
// 对url发出一个get请求
request.get({
‘url’: url
}, (error, response, body) => {
// 将body的内容解析出来
let abody = JSON.parse(body);
const { openid, session_key } = abody
if (openid) {
User.findOne({ openId: openid }).exec((err, doc) => {
if (err) {
res.send({ isSuccess: false, message: ‘登录失败’ });
} else {
let token = createToken({ isAdmin: 0, openId: openid, session_key }, 3600 * 24 * 3)
if (!doc) {
new User({ openId: openid, session_key, isAdmin: 0, token }).save((err1, doc) => {
if (err1) {
res.send({ isSuccess: false, message: ‘登录失败’ });
} else {
res.send({ isSuccess: true, message: ‘登录成功’, data: doc });
}
})
} else {
User.findByIdAndUpdate({ _id: doc._id }, { token, session_key }, { new: true }).exec((err2, doc2) => {
if (err2) {
res.send({ isSuccess: false, message: ‘登录失败’ });
} else {
res.send({ isSuccess: true, message: ‘登录成功’, data: doc });
}
})
}
}

        })
    } else {
        res.send({ isSuccess: false, message: '登录失败' });
    }
})

})
module.exports = router



> 
> 授权后更新用户信息接口
> 
> 
> 



//会员注册
var express = require(‘express’);
var router = express.Router();
const User = require(‘./…/model/user’)
router.post(‘/memberRegister’, (req, res, next) => {
const { _id, avatarUrl, city, country, gender, language, nickName, province, } = req.body;
User.findByIdAndUpdate({ _id }, { avatarUrl, city, country, gender, language, nickName, province, }, { new: true }).exec((err3, doc) => {
if (err3) {
res.send({ isSuccess: false, message: ‘登录失败’ });
} else {
res.send({ isSuccess: true, message: ‘登录成功’, data: doc });
}
})
})
module.exports = router


#### 五、返回登录之前的页面



if(res.data.isSuccess){
	_this.$store.commit('SET\_STATE',['userInfo',res.data.data])
	_this.$store.commit('SET\_STATE',['token',res.data.data.token])
	uni.setStorageSync('token',res.data.data.token)
	_this.$refs.uToast.show({
		title: '登录成功',
		type: 'success',
	});
}else{
	_this.$refs.uToast.show({
		title: '登录失败',
		type: 'fail',
	});
}
setTimeout(()=>{
	uni.navigateBack()
},1500) 

// SET_STATE 方法
const mutations = {
SET_STATE(state, e) {
if (e) {
state[e[0]] = e[1];
}
},

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

1715717510193)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值