当前位置: 首页 > Web前端 > HTML

挑战30天开发一个回答有关消防问题的小程序,教你如何办理小程序用户注册

时间:2023-03-28 18:41:36 HTML

编辑【吃瓜群众】啦啦啦~,几天不见,又来了。今天更新第二期,这几天正在处理用户注册和题库领取。知识点:注册逻辑、登录缓存我们上期讲到,如何搭建一个基本的小程序框架,涉及到开源组件(colorUI、Vant)、前端新手入门,强烈推荐这两个开源组件,可以帮助您节省大量时间。[兔子]上期直连:挑战30天,开发消防知识答题小程序,第一天好~,开始吧1.用户注册登录90%的用户交互程序都离不开用户注册。如果您希望您的程序能够识别您的身份,则必须将用户信息存储在云端。这是因为Http协议本身是无状态的。每次重新链接请求时,您都会忘记自己是谁。接下来怎么处理?上一期我们利用“用户填充”的开放能力完善了用户头像和昵称。接下来,我们需要将用户的头像和昵称存入数据库,并打开云开发后台,创建一个“用户”的集合。权限(所有用户可读),只有创建者可读写)编辑创建“users”集合集合创建完成后,开始编写代码,将用户信息存储在代码中//保存用户信息saveInfo:asyncfunction(){varthat=this;//弹窗wx.showToast({title:'Saving',icon:"loading",duration:30000})//先检查用户昵称constcheckResult=awaitthat.checkText();if(checkResult.result.errcode==0){//上传用??户头像constuploadResult=awaitthat.upload();//头像链接varfileID=uploadResult.result.fileID;//上传成功if(fileID){//这里云开发函数注册用户wx.cloud.callFunction({name:'login',data:{create_time:util.formatTime(newDate()),avatarUrl:fileID,nickName:that.data.nickName,openid:that.data.openid,}}).then((res)=>{//登录成功跳转到首页that.jump();}).catch((err)=>{//登录失败wx.showToast({icon:'none',title:'登录失败'+err})});}else{wx.showToast({title:'保存头像失败',icon:"none",duration:1000})}}else{//清除用户昵称that.setData({nickName:''})//Illegalwx.showToast({title:'昵称无效,请重新输入',icon:"none",duration:1000})}},以上代码涉及三层业务流程1:检查用户是否nickname是合规的(小程序接入msgSecCheck内容检测API是非常有必要的)。它是免费的,可以屏蔽大多数非法词。如果你想做一个内容兼容的小程序,强烈推荐你使用,非常有必要!编辑违规检测代码try{constresult=awaitcloud.openapi.security.msgSecCheck({openid:event.openid,//openidscene:2,//1个人资料;2评论;3论坛;4社交日志)版本:2,//Version2content:event.content,//检测内容})//默认失败result['errcode']=87014;//建议risky(危险),pass(通过),review(审查)if(result['result']['suggest']=='pass'||result['result']['suggest']=='review'){//安全测试通过result['errcode']=0;}else{//违规内容result['errcode']=87014;}//返回状态码returnresult;}catch(err){returnerr;}2:头像上传。因为从11.8开始,小程序的wx.getUserProfile接口将被撤销。小程序无法直接获取头像永久链接,所以我们要通过“填充能力”获取临时头像,然后将临时头像上传到云存储生成永久链接编辑avatarUrl永久头像连接代码上传:function(){varthat=this;//在这里上传用户头像letorderCode='';//6位随机数(添加在时间戳之后)for(vari=0;i<24;i++){orderCode+=Math.floor(Math.random()*10);}//文件名constcloudPath='avatar/'+util.timestampToTimeFramt(newDate().getTime())+'/'+(newDate(.getTime()+orderCode)+'.png';//检测文本值returnnewPromise((resolve,reject)=>{//上传图片云函数wx.cloud.callFunction({name:"upload",数据:{cloudPath:cloudPath,avatarUrl:that.data.avatarUrl,},成功:function(res){resolve(res);},fail:function(res){reject(res);}});})},3:新老用户处理逻辑。用户场景:新用户首次登录,将信息存入数据库,老用户登录,更新数据库的登录时间。然后将登录凭据缓存到本地,每次请求都可以携带登录凭据。编辑流程图代码//查询用户是否注册constuserResult=awaitdb.collection('users').where({openid:event.openid,})。得到();//获取用户条目数varlength=userResult.data.length;if(length==0){//新用户需要填写信息,登录状态falsereturn{success:false,msg:'新用户(填写数据)'};}else{//老用户登录状态truereturn{success:true,msg:'老用户(直接登录)',data:userResult.data};}[微笑]三个流程大概是这样的,用户注册流程是不是看起来很简单?主要是云开发天生的免认证能力为我们节省了很多时间,也方便了很多没有背景基础的同学开发自己的小程序。购买服务器、域名备案、后台语言、运维烦恼。小编终于来了个数据库特写[天真笑]。是否存储了用户的头像、昵称等相关信息?EdituserprofileEditcacheEND~,今天的用户注册登录部分大概就这样,有什么遗漏或者不清楚的可以在下方留言,我会一一解答下预览:题库设计和自动问题组编辑