🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
在app.js里的onLaunch里写入下面代码 ```javascript wx.login({ success: res => { //存储登录code,提交给后台获取登录数据 wx.setStorageSync('wx_login', res.code); } }) ``` 公共方法代入 ```javascript const login = ({ success }) => { return new Promise(function(resolve, reject) { //判断是否存在登录状态,存在则直接返回成功 if (wx.getStorageSync('access_token') != '') { success([]); return true; } wx.showLoading({ title: '微信授权中', mask:true }) wx.getUserProfile({ desc: '获取用户信息', success: function(e) { var data = {}; //获取缓存中的登录code data['code'] = wx.getStorageSync('wx_login'); data['iv'] = e.iv; data['encryptedData'] = e.encryptedData; //存在上级分享token//可以是存储的上级用户ID if (wx.getStorageSync('share_token') != '') { data['share_token'] = wx.getStorageSync('share_token'); } //传入后台解析数据并储存 wx.request({ url: 'auth/member_oauth', data: data, success: function(res) { if (res.code == 1) { //存储登录状态token 或者用户ID wx.setStorageSync('access_token', res.data.user_token); //因为code已经失效,所以重新存储登录code wx.login({ success: res => { wx.setStorageSync('wx_login', res .code); wx.hideLoading({ success: (res) => {}, }) wx.showToast({ title: '授权成功', icon: 'none' }) } }) success(res); } else { wx.hideLoading({ success: (res) => {}, }) //登录失效,重新获取登录code wx.login({ success: res => { wx.setStorageSync('wx_login', res .code); wx.hideLoading({ success: (res) => {}, }) wx.showToast({ title: '授权登录失败,请重新授权', icon: 'none' }) } }) } } }) }, fail: function() { wx.hideLoading({ success: (res) => {}, }) //拒绝登录,重新获取登录code wx.login({ success: res => { wx.setStorageSync('wx_login', res.code); wx.hideLoading({ success: (res) => {}, }) wx.showToast({ title: '您取消了授权', icon: 'none' }) } }) } }) }).catch({}) } /* 公共showTotast loading 方法 */ module.exports = { login: login } ``` 在其他文件使用方法 我将公共方法放入init.js中 ```javascript const init = require('../../utils/init.js'); init.login({ success:function(){ // 授权登录成功后的逻辑代码 }) }) ```