在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(){
// 授權登錄成功后的邏輯代碼
})
})
```