WeChat小程序的登录授权关于token

微信小程序登录授权【重点也是难点】

  1. 下载天使童装项目源码:https://github.com/EastWorld/wechat-app-mall
  2. 需要登录授权的页面必须要传递token
哪些页面需要token商品中详情页:收藏,加入购物车
我的:
购物车页面token值从哪里来?1.何为token:前端鉴权的一种方式,token由后端生成,token是有时效性
2.微信小程序登录授权拿到token第一步:登录流程参考文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.htmlwx.login()-->wx.request()-->后端--->腾讯服务前端-->后端-->腾讯服务器第二步:具体如何实现登录--检测是否注册--没注册先获取用户信息先注册(写入公司数据库)--然后再登录(1)点击封装的登录模块中的”允许“按钮---执行processLogin方法processLogin代码如下:processLogin(e) {//如果没有用户userInfoif (!e.detail.userInfo) {wx.showToast({title: '已取消',icon: 'none',})return;}//如果用userInfo,则调用register注册方法AUTH.register(this);}(2)register方法注册时参考接口文档:https://api.it120.cc/doc.html#/%E5%89%8D%E7%AB%AFapi%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/registerComplexUsingPOST_7async function register(page) {let _this = this;wx.login({success: function (res) {let code = res.code; // 微信登录接口返回的 code 参数,下面注册接口需要用到//微信小程序内置获取用户信息的api方法wx.getUserInfo({success: function (res) {console.log('getUserInfo::::::',res)let iv = res.iv; //加密值let encryptedData = res.encryptedData; //包括敏感数据在内的完整用户信息的加密数据let referrer = '' // 推荐人let referrer_storge = wx.getStorageSync('referrer');if (referrer_storge) {referrer = referrer_storge;}// 下面开始调用注册接口,用咱们封装调用接口方法去注册WXAPI.register_complex({code: code,encryptedData: encryptedData,iv: iv,referrer: referrer}).then(function (res) {console.log('登录注册成功状态:',res)_this.login(page);})}})}})
}(3)执行登录login方法 async function login(page){const _this = thiswx.login({success: function (res) {WXAPI.login_wx(res.code).then(function (res) {  console.log('登录成功后返回结果::::::',res)      if (res.code == 10000) {// 去注册//_this.register(page)return;}if (res.code != 0) {// 登录错误wx.showModal({title: '无法登录',content: res.msg,showCancel: false})return;}//登录成功将后端返回的token和uid存储到本地缓存中wx.setStorageSync('token', res.data.token)wx.setStorageSync('uid', res.data.uid)//如果有page,则重新刷新page对应的页面,或用wx.navigaterTo()if ( page ) {page.onShow()}})}})
}//下面两个方法主要用于检测登录态和token是否过期1.只检测登录态(检测微信返回)
async function checkSession(){return new Promise((resolve, reject) => {wx.checkSession({success() {return resolve(true)},fail() {return resolve(false)}})})
}// 总体检测登录状态,包括token和微信登录态 返回 true 或false
async function checkHasLogined() {//获取本地存储的tokenconst token = wx.getStorageSync('token')//如果没有token,直接返回falseif (!token) {return false}//检测微信登录态/*** 调用成功说明当前 session_key 未过期,调用失败说明 session_key 已过期*/const loggined = await checkSession()//如果没有登录态,则移除token,并返回falseif (!loggined) {wx.removeStorageSync('token')return false}//检测登录token是否有效const checkTokenRes = await WXAPI.checkToken(token)//如果登录token无效,移除token并返回falseif (checkTokenRes.code != 0) {wx.removeStorageSync('token')return false}//如果有token并且有效,并且微信登录态也有效则返回truereturn true
}API工厂封装的数据请求接口说明文档:https://github.com/gooking/apifm-wxapi/blob/master/instructions.mdAPI工厂封装的数据请求源码地址:https://github.com/gooking/apifm-wxapi/blob/dbc6981600737fd3bc5624bc2399f84b609faad4/src/index.js#L394

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6pRI53X5-1596903530186)(assets/image-20200808144209029.png)]


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部