// auth.js - 认证相关服务 import request from '../utils/request'; /** * 微信登录 * 1. 调用wx.login获取code * 2. 发送code到服务端换取token和openid * 3. 保存token和openid到本地存储 */ export const wxLogin = () => { return new Promise((resolve, reject) => { wx.login({ success: (res) => { if (res.code) { // 发送code到服务端 request({ url: '/login', method: 'POST', data: { code: res.code } }).then(response => { // 保存token和openid if (response.data && response.data.token && response.data.openid) { wx.setStorageSync('token', response.data.token); wx.setStorageSync('openid', response.data.openid); resolve(response.data); } else { reject(new Error('登录失败,服务器返回数据格式错误')); } }).catch(err => { reject(err); }); } else { reject(new Error('登录失败,获取code失败: ' + res.errMsg)); } }, fail: (err) => { reject(new Error('微信登录失败: ' + err.errMsg)); } }); }); }; /** * 检查登录状态 * 1. 检查本地是否有token和openid * 2. 如果有,验证token是否有效 * 3. 如果无效,清除本地存储并返回false */ export const checkLoginStatus = () => { return new Promise((resolve, reject) => { const token = wx.getStorageSync('token'); const openid = wx.getStorageSync('openid'); if (!token || !openid) { resolve(false); return; } // 验证token有效性 request({ url: '/verify-token', method: 'POST' }).then(() => { resolve(true); }).catch(() => { // token无效,清除本地存储 wx.removeStorageSync('token'); wx.removeStorageSync('openid'); resolve(false); }); }); }; /** * 退出登录 */ export const logout = () => { wx.removeStorageSync('token'); wx.removeStorageSync('openid'); return Promise.resolve(); };