微信小程序-----校园头条详细开发之注册登录
1.注册登录功能的实现
1.1结构


1.2 代码实现
1.2.1 为了通信的安全着想,在此我是通过小程序端获得code,然后传递给后端,在后端向微信后台发送api请求,解密,从而得到用户的唯一标示openId
1.2.2 进登录界面之前,优先通过oppid查询用户是否存在,存在直接跳过进入首页,没有存在就注册到数据库,并拿掉用户信息,保存
const app = getApp()
Page({
data: {
//判断小程序的API,回调,参数,组件等是否在当前版本可用。
canIUse: wx.canIUse('button.open-type.getUserInfo'),
casArray: null,
schoolId: 0,
num: null
},
onLoad: function() {
var that = this;
app.getOpenId().then(function(res) { wx.request({
url: 'http://xxxxxxx:8080/webchat/login/queryallschool',
header: {
'content-type': 'application/json'
},
success: res => {
console.log(res.data)
//从数据库获取用户信息
that.setData({
casArray: res.data.data.messages
})
}
})
//从数据库获取用户信息
that.queryUsreInfo();
// if (app.globalData.userInfo != null) {
// wx.switchTab({
// url: '../index/index',
// })
// } }) }, bindGetUserInfo: function(e) {
if (e.detail.userInfo) {
//用户按了允许授权按钮
var that = this;
//插入登录的用户的相关信息到数据库
wx.request({
url: 'http://xxxxxxxx:8080/webchat/login/adduser',
data: {
openId: app.globalData.openId,
nickName: e.detail.userInfo.nickName,
avatarUrl: e.detail.userInfo.avatarUrl,
province: e.detail.userInfo.province,
city: e.detail.userInfo.city,
country: e.detail.userInfo.country,
gender: e.detail.userInfo.gender,
schoolId: that.data.schoolId,
studentNumber: that.data.num
},
header: {
'content-type': 'application/x-www-form-urlencoded'
},
method: 'POST',
success: res => {
//从数据库获取用户信息
that.queryUsreInfo();
}
});
//授权成功后,跳转进入小程序首页
// wx.switchTab({
// url: '../index/index',
// })
} else {
//用户按了拒绝按钮
wx.showModal({
title: '警告',
content: '您点击了拒绝授权,将无法进入小程序,请授权之后再进入!!!',
showCancel: false,
confirmText: '返回授权',
success: function(res) {
if (res.confirm) {
console.log('用户点击了“返回授权”')
}
}
})
}
},
//获取用户信息接口
queryUsreInfo: function() {
wx.request({
url: 'http://xxxxxx:8080/webchat/login/queryuser',
data: {
openId: app.globalData.openId
},
header: {
'content-type': 'application/json'
},
success: function(res) {
console.log(res.data);
app.globalData.userInfo = res.data.data.userInfo;
if (res.data.data.userInfo != null) {
wx.switchTab({
url: '../index/index',
})
} }
});
},
bindCasPickerChange: function(e) {
console.log(e)
var that = this;
that.setData({ casId: e.detail.value,
schoolId: that.data.casArray[e.detail.value].schoolId
})
},
formSubmit: function(e) {
this.data.num = e.detail.value.num;
}
})
登录验证,注册,保存用户信息
1.3 技术难点
1)动态存储后台等到的数据 this.data
2)微信小程序默认的wx.request是异步请求,对于登录验证跳转不合适,需要改成同步请求
微信小程序-----校园头条详细开发之注册登录的更多相关文章
- 微信小程序-----校园头条详细开发之首页
1.首页展示功能的实现 1.1 结构 1.2 代码实现 1.2.1 界面的设计这里就不多说了,样式都是我自己写的,还有就是页面的跳转,看详细代码 var app = getApp() Page({ ...
- 微信小程序-----校园头条详细开发之列表展示数据
1.分类列表数据展示功能的实现 1.1 结构 1.2 代码实现 1.2.1 列表显示数据,.每次界面显示6条数据,发请求获取数据,动态存放 var app = getApp() Page({ dat ...
- 微信小程序-----校园头条整体概括
1.项目需求 为了让在校师生可以更加方便的了解学校信息,从而合理的安排自己的时间,避免发生冲突和错过事件,通过小程序的便利性,可以达到随手一查的功能. 2.项目布局 3.效果展示 3.1登录 3.2首 ...
- 微信小程序版博客——开发汇总总结(附源码)
花了点时间陆陆续续,拼拼凑凑将我的小程序版博客搭建完了,这里做个简单的分享和总结. 整体效果 对于博客来说功能页面不是很多,且有些限制于后端服务(基于ghost博客提供的服务),相关样式可以参考截图或 ...
- 微信小程序购物商城系统开发系列-目录结构
上一篇我们简单介绍了一下微信小程序的IDE(微信小程序购物商城系统开发系列-工具篇),相信大家都已经蠢蠢欲试建立一个自己的小程序,去完成一个独立的商城网站. 先别着急我们一步步来,先尝试下写一个自己的 ...
- 微信小程序购物商城系统开发系列-工具篇
微信小程序开放公测以来,一夜之间在各种技术社区中就火起来啦.对于它 估计大家都不陌生了,对于它未来的价值就不再赘述,简单一句话:可以把小程序简单理解为一个新的操作系统.新的生态,未来大部分应用场景都将 ...
- 微信小程序购物商城系统开发系列
微信小程序购物商城系统开发系列 微信小程序开放公测以来,一夜之间在各种技术社区中就火起来啦.对于它 估计大家都不陌生了,对于它未来的价值就不再赘述,简单一句话:可以把小程序简单理解为一个新的操作系统. ...
- 从微信小程序到鸿蒙js开发【11】——页面路由
目录: 1.router.push()&wx.navigateTo() 2.router.replace()&wx.redirectTo() 3.router.back()&w ...
- 从微信小程序到鸿蒙js开发【12】——storage缓存&自动登录
鸿蒙入门指南,小白速来!从萌新到高手,怎样快速掌握鸿蒙开发?[课程入口] 正文: 在应用开发时,我们常需要将一些数据缓存到本地,以提升用户体验.比如在一个电商的app中,如果希望用户登录成功后,下次打 ...
随机推荐
- arcgis textsymbol overlap
arcgis textsymbol overlap textsymbol 重叠的问题 du?de? duration?? arcgis for javascript 如何避免 ...
- FreeBSD 安裝 wget
cd /usr/ports/ftp/wgetmake install clean pkg_add -r wget就可以把wget安装上去了
- C# DateTime的时区
C#中可以通过DateTime的Kind属性指定DateTime的时区 DateTimeKind有3个枚举值: Unspecified:未指定为UTC时间或本地时间 Utc: UTC时间 Local: ...
- linux 命令——37 date (转)
在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便. 1.命令格式: date [参数 ...
- Nginx源码安装及调优配置(转)
导读 由于Nginx本身的一些优点,轻量,开源,易用,越来越多的公司使用nginx作为自己公司的web应用服务器,本文详细介绍nginx源码安装的同时并对nginx进行优化配置. Nginx编译前 ...
- imfilter()用法
功能:对图像进行滤波. 用法: g = imfilter(f, w, filtering_mode, boundary_options, size_options) 其中,f:输入图像,w:滤波掩模, ...
- Linux内核参数min_free_kbytes
1. min_free_kbytes 先看官方解释: This is used to force the Linux VM to keep a minimum number of kilobytes ...
- Bootstrap 轮播(Carousel)插件
轮播插件是一种灵活的响应式的向站点添加滑块的方式.除此之外,内容也是非常灵活的.可是图像,内嵌框架,视频或者其它您想的放置任何内容的类型. 下面是一个简单的幻灯片,使用轮播(carousel)插件显示 ...
- Angular2 Service获取json数据
在Angular2框架下一般交互解析json是要用到Service的,其实除了Service还是很多的,今天先写个最简单的前后端数据交互 嗯~~ 首先我先在app包下直接创建Service 好了 这里 ...
- [mysql] Can't read from messagefile
系统:windows 重启mysql服务出现 Server] Can't read from messagefile 等错误时候, 应先执行 mysqld --initialize-insecure ...