好了,我觉得有必要对前一阶段的小程序开发过程中的一些经验写出来,总结一下,今天呢,就来总结一下小程序登录注册相关的流程和开发过程中需要注意的问题,好了,废话不多说,开始咯!

一:登录

思路:

当用户在未登录状态下点击“登录”按钮之后,执行login函数,先用wx.login获取登录凭证code, encryptedData和iv ,
然后把这三个参数发送过去,取回来 isLogin1,如果他是1,则代表该用户已经注册过,则不需要进行注册,点击登录直接就
可以微信登录,然后跳转到首页,如果为2,则代表该用户是新用户,需要跳转到注册页面进行注册,但是在这之前,需要给后台发送空的

username、phone、password、phone_code、head_photo,还有code值过去,如果返回状态是100,则跳转到注册页面注册完成后自动进入登录

状态,然后跳转首页。
个人中心页面wxml:
<!--pages/user/index.wxml-->
<view hidden='{{boolean}}'><view wx:if="{{isLogin == 1}}"><!-- 个人信息 --><view class='infomation'><!-- 基本信息 --><view class="gameTitle"><navigator hover-class="none" href=""><image src="{{dataList.head_photo}}"></image></navigator><view><view class="gameName"><navigator hover-class="none" href="">{{dataList.username}}</navigator></view><view class="gameSummary" wx:if="{{dataList.title == ''}}"><navigator hover-class="none" href="">这个玩家很懒,什么也没留下</navigator></view><view class="gameSummary" wx:if="{{dataList.title != ''}}"><navigator hover-class="none" href="">{{dataList.title}}</navigator></view></view></view><!-- 粉丝等 --><view class='number'><navigator hover-class="none"><view>{{dataList.follow_num}}</view><view>关注</view></navigator><navigator hover-class="none"><view>{{dataList.fans_num}}</view><view>粉丝</view></navigator>  <navigator hover-class="none"><view>{{dataList.level_value}}</view><view>积分</view></navigator>           </view>       </view><!-- “我的”列表 --><view class='myList'><view class='list'><navigator hover-class="none">推荐</navigator><navigator hover-class="none">评论</navigator><navigator hover-class="none">收藏</navigator><navigator hover-class="none">商城</navigator><navigator hover-class="none" bindtap='loginOut'>退出</navigator></view></view> </view><view wx:if="{{isLogin == 2}}"><view class='bgBox'><image class='bg' src='../../img/bg.jpg'></image><image class='image' src='../../img/image.jpg'></image></view><view class="unLogin"><view>登录后,你的个人主页等资料</view><view>会显示在这里,展示给他人</view><button bindtap='login'>登录</button> </view></view>
</view>

js:

// pages/user/index.js
Page({/*** 页面的初始数据*/data: {isLogin: '',dataList: '',boolean: true},login: function () {let that = this;// 登录wx.login({success: res => {console.log(res)// 发送 res.code 到后台换取 openId, sessionKey, unionId//获取encryptedData和ivlet encryptedData = wx.getStorageSync('encryptedData');let iv = wx.getStorageSync('iv');let code = res.code;//获取用户信息wx.getUserInfo({success: function (res) {let encryptedData = res.encryptedData;let iv = res.iv;that.setData({encryptedData: encryptedData,iv: iv});//发送请求wx.request({url: 'https://www.muwai.com/index.php/Xcx/Login/check_wx_first',data: { code: code, encryptedData: encryptedData, iv: iv },success: res => {console.log(res)let oStatus = res.data.status;console.log(oStatus)if (oStatus == 100) {let isLogin1 = res.data.is_first_login;if (isLogin1 == 1) {//跳转到注册页面wx.redirectTo({url: '../register/index?code=' + code,})} else if (isLogin1 == 2) {//let avatarUrl = wx.getStorageSync('avatarUrl');wx.request({url: 'https://www.muwai.com/index.php/Xcx/Login/wx_login',data: { code: code, username: '', phone: '', password: '', phone_code: '', head_photo: '' },success: res => {//成功的话直接跳转到首页let oStatus = res.data.status;if (oStatus == 100) {let session_id = res.data.session_id;wx.setStorageSync('session_id', session_id);wx.switchTab({url: '../index/index?session_id=' + session_id})that.setData({boolean: true});}}})}} else {//记得以后给用户告知错误信息that.setData({info: res.data.info});//console.log(res.data.info)}}})}})}})},//登出loginOut: function (options) {let that = this;wx.request({url: 'https://www.muwai.com/index.php/Xcx/Login/login_out',success: res => {let oStatus = res.data.status;if (oStatus == 100) {wx.setStorageSync('session_id', '');let session_id = wx.getStorageSync('session_id');wx.switchTab({url: '../index/index?session_id=' + session_id});that.setData({boolean: true});}wx.setStorageSync('session_id', '');}})},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {},/*** 生命周期函数--监听页面初次渲染完成*/onReady: function () {},/*** 生命周期函数--监听页面显示*/onShow: function () {let session_id = wx.getStorageSync('session_id');console.log(session_id)let that = this;wx.request({url: 'https://www.muwai.com/index.php/Xcx/User/index?session_id=' + session_id,success: res => {let oStatus = res.data.status;if (oStatus == 100) {this.setData({isLogin: 1,boolean: false});//加载个人信息wx.request({url: 'https://www.muwai.com/index.php/Xcx/User/index?session_id=' + session_id,success: res => {console.log(res)let oStatus = res.data.status;if (oStatus == 100) {var data = res.data.userinfo;that.setData({dataList: data});} else if (oStatus == 101) {}}})} else if (oStatus == 101) {this.setData({isLogin: 2,boolean: false});}}})},/*** 生命周期函数--监听页面隐藏*/onHide: function () {},/*** 生命周期函数--监听页面卸载*/onUnload: function () {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh: function () {},/*** 页面上拉触底事件的处理函数*/onReachBottom: function () {},/*** 用户点击右上角分享*/onShareAppMessage: function () {}
})

注册页面wxml:

<!--pages/register/index.wxml-->
<view class="box">     <view class="tab1" hidden='{{next}}'><view class='step'>第一步 发送验证码到手机</view><input class="idText" maxlength="11" bindinput="phoneInput" type="text" id="phone" name="phone" placeholder="手机号" autocomplete="off" οnkeyup="checkMobile($(this))"/><text class="tips">{{phoneTip}}</text><view class="keyCodeBox"><input class="keyCode" bindinput="keyCodeInput"  type="text" id="code" name="code" placeholder="验证码"/><button class="sendBtn {{isChecked?'btnCode':''}}" bindtap='codeBtn' disabled="{{boolean}}" name="sendcode" id="sendcode">{{mailCode}}</button></view><text class="tips tips1">{{keyCodeTip}}</text>   <view class='instruction'>注册代表您已同意<text>用户协议及隐私条款</text>,包括<text>Cookie使用条款</text></view><button class="Register" bindtap='next'>下一步</button></view><view class="tab2" hidden='{{!next}}' ><view class='backBox' bindtap='back'><image class='back' src='../../img/reback.png'></image></view><view class='step stepSecond'>第二步 设置账号信息</view><input class="idText" bindinput="userNameInput" type="text" id="username" name="username" placeholder="昵称"/><text class="tips">{{userNameTip}}</text><input class="password" bindinput="userPasswordInput" type="password" id="password" name="password" placeholder="密码"/><image class="typeChange" src="../../../../Public/Moter/image/eye.png" alt="眼睛" id="eye"></image> <text class="tips passTip">{{userPasswordTip}}</text>               <button class="login" bindtap="oLogin">登录</button></view> <view>{{info}}</view>
</view>

js:

// pages/register/index.js
Page({/*** 页面的初始数据*/data: {mailCode: "发送验证码",boolean: true,isChecked: false,phone: '',phoneTip:'',keyCode: '',keyCodeTip:'',userName: '',userNameTip: '',userPassword: '',userPasswordTip: '',next: '',code: '',info: ''},//手机号phoneInput: function (e) {let mobile = e.detail.value;let myreg = /^13[\d]{9}$|^14[5,7]{1}\d{8}$|^15[^4]{1}\d{8}$|^17[0,3,6,7,8]{1}\d{8}$|^18[\d]{9}$/;if (mobile.length == 0){this.setData({phoneTip: '手机号不能为空'})} else if (!myreg.test(mobile)){this.setData({phoneTip: '请检查您的手机号是否有误'})}else{this.setData({phoneTip: '',phone: mobile,boolean: false})}   },//验证码keyCodeInput: function (e) {let keyCode = e.detail.value;if (keyCode.length == 0) {this.setData({keyCodeTip: '验证码不能为空'})} else {this.setData({keyCodeTip: '',keyCode: keyCode,})}     },//用户名userNameInput: function (e) {let userName = e.detail.value;if (userName.length == 0) {this.setData({userNameTip: '昵称不能为空'})} else {this.setData({userNameTip: '',userName: userName,})}},//用户密码userPasswordInput: function (e) {let password = e.detail.value;if (password.length < 6 || password.length>16) {this.setData({userPasswordTip: '密码长度为6-16位'})}else {this.setData({userPasswordTip: '',userPassword: password})}      }, //下一步next: function (options) {let prefix = this.data;if (prefix.keyCodeTip == '' && prefix.phoneTip == '' && prefix.phone != '' && prefix.keyCode != ''){this.setData({next: true})}     },//返回back: function (options) {this.setData({next: false,})},//登录oLogin: function () {     let that = this;var pre = that.data;let avatarUrl = wx.getStorageSync('avatarUrl');wx.request({url: 'https://www.muwai.com/index.php/Xcx/Login/wx_login',data: { code: pre.code, username: pre.userName, phone: pre.phone, password: pre.userPassword, phone_code: pre.keyCode, head_photo: avatarUrl},success: res => {//成功的话直接跳转到首页let oStatus = res.data.status;if (oStatus == 100) {let session_id = res.data.session_id;wx.setStorageSync('session_id', session_id);wx.switchTab({url: '../index/index?session_id=' + session_id})}else{that.setData({info: res.data.info})}}})   },//发送验证码codeBtn: function () {console.log(6)var pre = this.data;wx.request({url: 'https://www.muwai.com/index.php/Xcx/User/send_code',data: { phone: pre.phone, type: "1", btype: "1"},success: res => {//成功的话直接跳转到首页let oStatus = res.data.status;let phoneTip = res.data.info;if (oStatus == 100){//倒计时let time = null;let that = this;let pre = this.data;let num = 60;time = setInterval(function () {if (num > 1) {num--;that.setData({mailCode: num + 's',isChecked: true,boolean: true})} else {that.setData({mailCode: '重新发送',isChecked: false,boolean: false});clearInterval(time);}}, 1000)} else{this.setData({phoneTip: phoneTip})}        }})}, /*** 生命周期函数--监听页面加载*/onLoad: function (options) {let that = this;this.setData({//把读取出来的数据存储到页面的数据data中code: options.code})},/*** 生命周期函数--监听页面初次渲染完成*/onReady: function () {},/*** 生命周期函数--监听页面显示*/onShow: function () {},/*** 生命周期函数--监听页面隐藏*/onHide: function () {},/*** 生命周期函数--监听页面卸载*/onUnload: function () {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh: function () {},/*** 页面上拉触底事件的处理函数*/onReachBottom: function () {},/*** 用户点击右上角分享*/onShareAppMessage: function () {}
})

效果图:


登录状态:

大家看不明白的可以问我,因为涉及到的东西比较多,所以就不一一赘述了,还有一点灰常重要,那就是一定要多和后台
交流,因为有的东西需要两个人共同完成,不要以为后台给了数据,你就可以为所欲为了,no!!!合作才能共赢。

微信小程序之———登录注册!相关推荐

  1. webform窗体怎么实现session唯一标识_微信小程序用户登录和登录态维护的实现_javascript技巧...

    这篇文章主要介绍了微信小程序用户登录和登录态维护的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 让用户登录,标识用户和获取 ...

  2. 微信小程序的登录界面实现

    微信小程序的登录界面实现 <view class="container"><view class="wrapper"><view ...

  3. 微信小程序api登录接口wx.login(OBJECT)

    有些小程序可以直接使用而无需登录,例如,古诗.美图欣赏.美文等,这些微信小程序往往没有登录要求,只需要打开使用就可以了.但是,很多的小程序则往往需要登录,例如,在微信小程序里面您要发表评论.您要购买产 ...

  4. 新版微信小程序授权登录流程及问题汇总(getUserProfile)

    问题来源:前不久去面试的时候有面试官问我你有自己的博客啥的吗?只能很尴尬的说没有.其实一直想有一个属于自己的博客啥的去记录自己在开发过程中遇到的问题,正好现在微信小程序比较流行,就花了两天自己搞了一个 ...

  5. SpringCloud 微信小程序授权登录 获取openId SessionKey【SpringCloud系列13】

    SpringCloud 大型系列课程正在制作中,欢迎大家关注与提意见. 自我提升方法推荐:神奇的早起 早上 5:00 -5:20 起床刷牙 5:30-6:00 晨练(跑步.跳绳.骑自行车.打球等等) ...

  6. 零基础微信小程序开发心得----注册微信小程序

    因为项目需要用到小程序,自己想写个从零到有的微信小程序专题,记录学习心得. 目录 1.微信小程序简介 2.注册小程序 3.安装开发工具 4.小程序初始化目录介绍 1.微信小程序简介 微信小程序这个词可 ...

  7. 微信小程序的登录逻辑

    微信小程序的登录逻辑 先来一张微信登录的流程图: 鉴于小程序的限制,不能强制用户刚进小程序就登录,需要一个按钮,来引导用户进行登录 具体实现步骤: 1.当用户进入微信小程序时,首先我们先判断用户是否授 ...

  8. php做微信小程序登录,php(ThinkPHP)实现微信小程序的登录过程

    下面结合thinkPHP框架来实现以下微信小程序的登录流程,这些流程是结合了官网和github的一个网站综合实现的 https://mp.weixin.qq.com/debug/wxadoc/dev/ ...

  9. 微信小程序授权登录 组件的封装

    微信小程序授权登录 组件的封装 新建components文件 写wxml文件 wxss部分 js部分 json引用 页面使用 页面js 授权登录 流程如下: 因为多个页面功能需要登录状态 所以做了个组 ...

最新文章

  1. 关于60枚一分两分五分硬币凑成一块钱的解决方法
  2. python考试编程题
  3. SSH Web工程环境搭建总结
  4. 文本相似度计算(一)
  5. python元组的创建取值排序计数_Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】...
  6. Spring框架中的设计模式(三)
  7. WinCE6.0 修改开机Logo方法
  8. java数字转换32位字符串_java字符串和数字转换工具
  9. Android MediaCodec硬编码H264文件(四)
  10. 计算机四级数据库教程,全国计算机等级考试四级教程—数据库工程师[借鉴].pdf...
  11. 全自动抠图换背景软件下载_抠图换背景app下载-抠图换背景下载v1.1.6 安卓版-西西软件下载...
  12. 《深度学习:走向核心素养》学习体会
  13. 更改控制面板硬件和声音电源选项导致cpu温度很高
  14. App Store 内购项目配置
  15. 英文版-Hillsong现场演唱-神羔羊配得-《Worthy Is the Lamb》
  16. va_list的用法
  17. 一场奶香味的定增:让资本助力“奶生态”
  18. mysql 1067 abouting_GitHub - chenxiao07150808/MySQL
  19. MDN要点记录--CSS
  20. 芯通信EC616的NB-IOT模组SCP5资料

热门文章

  1. 儿童python入门书籍推荐_有哪些Python入门的书籍值得推荐?
  2. nginx变量ngx.var
  3. 无人驾驶汽车系统入门(二)——高级运动模型和扩展卡尔曼滤波
  4. 转:宁愿在真实前颤抖,也不愿在催泪弹下哭泣(今何在)
  5. 微信小程序开源云开发的博客【点赞、收藏、评论、海报、签到、积分、后台管理等】
  6. iphone中怎么添加邮箱_如何在iPhone的Gmail中添加附件
  7. 关于微信公众号分享在安卓手机不显示分享图片的问题
  8. 一个男人,给他女朋友的男朋友的一封信
  9. 哈罗单车确认完成新一轮几十亿融资 春华资本与蚂蚁金服领投
  10. 2048游戏配色方案的计算(小清新版)