微信小程序中的登录
微信小程序的登录功能是通过微信提供的 wx.login() 方法实现的。以下是一个简单的示例:
- 在 app.js 文件中,添加如下代码:
App({
onLaunch: function () {
// 登录
this.checkLogin();
},
checkLogin: function () {
var that = this;
wx.checkSession({
success: function (res) {
// session_key 未过期,并且在本生命周期一直有效
if (res.session_key) {
console.log('登录态未过期');
} else {
// session_key 已过期,需要重新登录
that.login();
}
},
fail: function () {
// session_key 已经失效,需要重新登录
that.login();
}
});
},
login: function () {
var that = this;
wx.login({
success: function (res) {
if (res.code) {
//发起网络请求
wx.request({
url: 'https://your-server.com/login',
data: {
code: res.code
},
success: function (response) {
if (response.data.status === 'success') {
// 保存用户信息到本地缓存
wx.setStorageSync('userInfo', response.data.userInfo);
console.log('登录成功');
} else {
console.log('登录失败');
}
}
});
} else {
console.log('登录失败!' + res.errMsg);
}
}
});
}
});
- 在需要使用登录功能的页面中,添加如下代码:
Page({
data: {
userInfo: {}
},
onLoad: function () {
var that = this;
// 检查登录状态
that.checkLogin();
},
checkLogin: function () {
var that = this;
wx.getStorage({
key: 'userInfo',
success: function (res) {
if (res.data) {
// 用户已登录,直接从缓存中读取用户信息
that.setData({
userInfo: res.data
});
} else {
// 用户未登录,调用登录方法
that.login();
}
}
});
},
login: function () {
var that = this;
wx.showLoading({
title: '登录中...',
mask: true
});
// 调用登录接口
wx.login({
success: function (res) {
if (res.code) {
//发起网络请求
wx.request({
url: 'https://your-server.com/login',
data: {
code: res.code
},
success: function (response) {
if (response.data.status === 'success') {
// 保存用户信息到本地缓存
wx.setStorageSync('userInfo', response.data.userInfo);
that.setData({
userInfo: response.data.userInfo
});
wx.hideLoading();
console.log('登录成功');
} else {
wx.hideLoading();
console.log('登录失败');
}
}
});
} else {
wx.hideLoading();
console.log('登录失败!' + res.errMsg);
}
}
});
}
});
在这个示例中,我们首先检查本地缓存中是否有用户信息。如果有,说明用户已登录;如果没有,调用 wx.login() 方法进行登录。登录成功后,将用户信息保存到本地缓存,并在需要时从缓存中读取。