var Parse = getApp().Parse; function loginNow(authPage = 'plugin://fm-plugin/fm-auth') { console.log('==========================================='); console.log('======= 开始登录流程 ======='); const currentUser = Parse.User.current(); const hasMobile = currentUser?.get('mobile'); const userLogin = wx.getStorageSync('userLogin'); console.log('当前用户:', currentUser ? currentUser.id : '无'); console.log('手机号:', hasMobile || '无'); console.log('userLogin 存储:', userLogin || '无'); console.log('==========================================='); // 只有同时满足以下条件才认为已登录: // 1. Parse.User.current() 存在 // 2. 用户有手机号 // 3. userLogin 存储存在 if (currentUser && hasMobile && userLogin) { console.log('✅ 用户已完整登录'); return true; } // 如果有 Parse 用户但没有手机号或 userLogin,清除状态重新登录 if (currentUser && (!hasMobile || !userLogin)) { console.log('⚠️ 用户状态不完整,清除并重新登录'); wx.removeStorageSync('userLogin'); } // 跳转到授权页面 console.log('🔄 准备跳转到授权页面:', authPage); // 检查页面栈 const pages = getCurrentPages(); console.log('当前页面栈层数:', pages.length); // 如果页面栈接近满了(>= 9层),使用 redirectTo if (pages.length >= 9) { console.log('⚠️ 页面栈接近满,使用 redirectTo'); wx.redirectTo({ url: authPage, success: () => { console.log('✅ redirectTo 跳转成功'); }, fail: (err) => { console.error('❌ redirectTo 失败:', err); wx.showToast({ title: '跳转失败,请重试', icon: 'none' }); } }); } else { // 使用 navigateTo console.log('📱 使用 navigateTo 跳转'); wx.navigateTo({ url: authPage, success: () => { console.log('✅ navigateTo 跳转成功'); }, fail: (err) => { console.error('❌ navigateTo 失败:', err); console.log('⚠️ 尝试使用 redirectTo'); // 降级使用 redirectTo wx.redirectTo({ url: authPage, success: () => { console.log('✅ redirectTo 跳转成功'); }, fail: (err2) => { console.error('❌ redirectTo 也失败:', err2); wx.showToast({ title: '跳转失败,请重试', icon: 'none' }); } }); } }); } console.log('==========================================='); return false; } /* 通过小程序wx.login获取openid和session_key */ function wxLogin() { return new Promise((resolve, reject) => { wx.login({ success: function (res) { if (res.code) { let url = 'https://server.fmode.cn/api/wxapp/auth_wxapp' wx.request({ url: url, data: { c: getApp().globalData.company, code: res.code, appType: getApp().globalData.appType ? getApp().globalData.appType : '' }, async success(res) { wx.setStorageSync("userInfo", res.data); resolve(res) }, }); } }, fail: function (err) { wx.showToast({ title: '服务器繁忙', icon: 'error' }) resolve() } }); }) } // async function loginParse() { // let userInfo = wx.getStorageSync("userInfo"); // let appId = getApp().globalData.appid // let username, password; // username = userInfo.openid; // openid作为用户名 // password = username.substr(username.length - 6, 6); // 后六位作为登录密码 // let query = new Parse.Query("_User") // query.equalTo(`wxapp.${appId}.openid`, username); // let current = await query.first() // if (current) { // await Parse.User.logIn(username, password); // } // } module.exports = { loginNow, // loginParse, wxLogin }