| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- 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('🔄 跳转到授权页面');
-
- // 检查页面栈
- const pages = getCurrentPages();
- console.log('当前页面栈层数:', pages.length);
-
- if (pages.length >= 10) {
- // 页面栈已满,使用 redirectTo
- 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
- }
|