Taro -- 微信小程序登录

2022-11-08,,,

Taro微信小程序登录

1.调用Taro.login()获取登录凭证code;
2.调用Taro.request()将code传到服务器;
3.服务器端调用微信登录校验接口(appid+appsecret+code),获得session_key+openid;

4.服务器端生成AUTH_TICKET(相当于userId),使用AUTH_TICKET为key,session_key+openid为value的形式存在服务器,并将AUTH_TICKET传送给客户端;
5.客户端本地存储AUTH_TICKET,登录成功!
6.下次登录时可以用AUTH_TICKET传输到服务器端验证登录态是否过期,未过期则登录成功。

小程序API中Taro.checkSession()可以校验用户当前session_key是否有效。

//检测sessionkey
Taro.checkSession({
success: function() {
//console.log("session_key 未过期")
//session_key 未过期,并且在本生命周期一直有效
},
fail: function() {
// session_key 已经失效,需要重新执行登录流程
// 登录
this.gotologin()
}
})

登录的代码:

gotologin = () => {
var that = this
//清除缓存
Taro.clearStorageSync()
// 登录
Taro.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey, unionId
if (res.code) {
//发起网络请求
Taro.request({
url: that.globalData.path + '/miniLogin/login.ajax',
data: {
code: res.code
},
success: res => {
let mylogininfo = res.data.data
if (mylogininfo != null) {
Taro.setStorageSync('logininfo', mylogininfo)
console.log(mylogininfo)
//登录验证 拿openid换AUTH_TICKET
Taro.request({
method: 'post',
url:
that.globalData.path +
'/miniLogin/loginCheck.ajax',
header: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: {
openid: mylogininfo.openid,
unionid: mylogininfo.unionid ? mylogininfo.unionid : '',
phoneNo: ''
},
success: res => {
let mdata = res.data
if (mdata.code == ) {
Taro.showToast({
title: '登录成功',
icon: 'success',
duration:
})
// 存储AUTH_TICKET
Taro.setStorageSync(
'AUTH_TICKET',
mdata.data.AUTH_TICKET
)
// 携带AUTH_TICKET请求接口,获取数据
Taro.request({
method: 'post',
url:
that.globalData.path + '/comLogin/statffCompany.ajax',
header: {
'Content-Type': 'application/x-www-form-urlencoded',
'weixinauth': mdata.data.AUTH_TICKET
},
success: function(res) {
console.log(res)
}
}) } else if (mdata.code == ) {
//此ID未绑定
//获取手机号码绑定
}
}
})
} else {
console.log(res.data)
}
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
}

 

Taro -- 微信小程序登录的相关教程结束。

《Taro -- 微信小程序登录.doc》

下载本文的Word格式文档,以方便收藏与打印。