小程序项目实战-小程序登录操作
全栈开发日记
共 1846字,需浏览 4分钟
· 2021-04-22
本章介绍开发者如何利用微信用户信息登录小程序,并使用云开发将用户数据保存到云数据库中。
微信开放文档中提供了两种方式给开发者完成小程序登录功能。分别是wx.getUserInfo
和wx.getUserProfile
两个接口。
微信官方公告
getUserInfo
接口进行了调整,现在该接口无法获取到微信用户的用户信息,只能获取到用户的匿名信息。同时,微信官方提供了新的接口getUserProfile
来替代getUserInfo
之前的工作,用以获取微信用户的个人信息(头像、昵称、性别和地区)。getUserInfo
接口无需过多介绍,下面说下如何使用新接口完成用户的登录操作,并将记录保存下来。
这里以我自己写的小程序为例:
<button
style="width:150rpx;padding:45rpx 8rpx;"
plain
type="primary"
bindtap="handleLogin">
登录
</button>
handleLogin(){
let that=this;
// 获取微信昵称等信息
wx.getUserProfile({
lang:'zh_CN',
desc:'用于小程序内部登录',success(ret){
// 将获取到的用户信息写入data中
that.setData({
userInfo:ret.userInfo
});
})
}
获取到的用户信息
用户登录后,要将该登录信息缓存到本地,否则下次用户切换页面或者重新进入小程序,可能还得需要再次执行登录操作,造成用户不好的体验。
// 设置缓存
const userInfo=ret.userInfo;
wx.setStorageSync('userInfo', userInfo);
const DB=wx.cloud.database().collection("userDate");
DB.add({
data:{
nickName:userInfo.nickName,
city:userInfo.city,
country:userInfo.country,
language:userInfo.language
}
});
使用云开发的好处在于,不需要后端开发,不用在意并发问题,需要好的性能就购买更高的云数据库资源。
这里使用了云函数获取当前登录用户的openid
,通过该唯一标识判断云数据库中是否已经存在该用户,如果不存在则为新用户,反之是老用户。
// 获取openid
wx.cloud.callFunction({
//云函数名
name:'login',
//回调函数
success(res){
// 将当前登录用户设置在缓存中
wx.setStorageSync('openid', res.result.openid);
const DB=wx.cloud.database().collection("userDate");
// 通过openid查询云数据库中是否有该用户
DB.where({
_openid:res.result.openid
}).get({
success(res){
// 如果查找到的结果长度是0,说明该用户是第一次登录,则需要进行保存
if(res.data.length==0){
console.log('该用户是新用户!');
}else{
console.log('该用户是老用户了!');
}
}
})
}
});
云数据库中保存的数据记录
云开发和云函数的配置之前好像没有讲解到,后面可以拿出两篇讲解一下如何配置和使用。
各位感兴趣的话可以点击下方公众号查看或者搜索微信公众号【全栈开发日记】进行查看。
评论
盘点Lombok的几个骚操作,你绝对没用过!
👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:http://116.62.199.48/ ,新项目正在酝酿中
小哈学Java
0
我发现 Lombok的几个骚操作,哈哈好用
大家好,我是小富~前言本文不讨论对错,只讲骚操作。有的方法看看就好,知道可以这么用,但是否应用到实际开发中,那就仁者见仁,智者见智了。一万个读者就会有一万个哈姆雷特,希望这篇文章能够给您带来一些思考。耐心看完,你一定会有所收获。@onX例如 onConstructor, oMet
程序员内点事
0
大量 Java 开源项目停更...
点击关注公众号,Java 干货及时推送↓推荐阅读:投了 100 多份简历后…出品 | OSC开源社区(ID:oschina2013)Sonatype 发布了最新的一份《软件供应链状况》报告,深入探讨了如何在充满选择的世界中定义更好的软件,并探讨人工智能 (AI) 对软件开发的深远
Java技术栈
0
牛逼啊,几乎涵盖了SpringCloud所有操作
前言Spring Cloud Alibaba为分布式应用开发提供了一站式解决方案。它包含开发分布式应用程序所需的所有组件,可以轻松地使用Spring Cloud开发应用程序。使用Spring Cloud Alibaba,只需添加一些注解和少量配置,即可将Spring Cloud应用连接到Alibab
java团长
0
盘点一个使用超级鹰识别验证码并自动登录的案例
点击上方“Python共享之家”,进行关注回复“资源”即可获赠Python学习资料今日鸡汤江上几人在,天涯孤棹还。大家好,我是皮皮。一、前言前几天在Python钻石交流群【静惜】问了一个Python实现识别验证码并自动登录的问题,提问截图如下:验证码的截图如下所示:二、实现过程这里大家激烈的探讨,【
IT共享之家
0
漫游CPU缓存效应,让你的程序性能飙升!
推荐一个原创技术号-非科班大厂码农,号主是机械专业转行进入腾讯的后端程序员!大多数读者都知道cache是一种快速小型的内存,用以存储最近访问内存位置。这种描述合理而准确,但是更多地了解一些处理器缓存工作中的“烦人”细节对于理解程序运行性能有很大帮助。在这篇博客中,我将运用代码示例来详解 cache工
码农有道公众号
1
【每周一课#06】MidJourney应用实战
#AI绘画# #MJ# #文生图#时间:4月24日周三 21:00课程大纲:1、关于AIGC:概念、发展历程、就业前景2、MJ基础认识:如何使用、底层逻辑、MJ与SD优缺点比较3、MJ基础功能介绍:任务指令、后缀参数、图生图、图生文、垫图、局部修改等4、MJ应用场景与变现方向
Python涨薪研究所
0
【每周一课#06】MidJourney 应用实战
#AI绘画# #MJ# #文生图#时间:4月24日周三 21:00课程大纲:1、关于AIGC:概念、发展历程、就业前景2、MJ基础认识:如何使用、底层逻辑、MJ与SD优缺点比较3、MJ基础功能介绍:任务指令、后缀参数、图生图、图生文、垫图、局部修改等4、MJ应用场景与变现方向
Python涨薪研究所
0