在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(){
// 授权登录成功后的逻辑代码
})
})
```