login.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. var Parse = getApp().Parse;
  2. function loginNow(authPage = 'plugin://fm-plugin/fm-auth') {
  3. console.log('===========================================');
  4. console.log('======= 开始登录流程 =======');
  5. console.log('当前用户:', Parse.User.current()?.get('mobile'));
  6. console.log('===========================================');
  7. // 检查是否已登录
  8. if (Parse.User.current()?.get('mobile')) {
  9. wx.setStorageSync("userLogin", Parse.User.current().id);
  10. }
  11. let userInfo = wx.getStorageSync('userLogin');
  12. if (userInfo == '') {
  13. console.log('用户未登录,跳转到授权页面');
  14. // 检查页面栈
  15. const pages = getCurrentPages();
  16. console.log('当前页面栈层数:', pages.length);
  17. if (pages.length >= 10) {
  18. // 页面栈已满,使用 redirectTo
  19. console.log('⚠️ 页面栈已满,使用 redirectTo');
  20. wx.redirectTo({
  21. url: authPage,
  22. success: () => {
  23. console.log('✅ redirectTo 跳转成功');
  24. },
  25. fail: (err) => {
  26. console.error('❌ redirectTo 失败:', err);
  27. wx.showToast({
  28. title: '跳转失败,请重试',
  29. icon: 'none'
  30. });
  31. }
  32. });
  33. } else {
  34. // 使用 navigateTo
  35. wx.navigateTo({
  36. url: authPage,
  37. success: () => {
  38. console.log('✅ navigateTo 跳转成功');
  39. },
  40. fail: (err) => {
  41. console.error('❌ navigateTo 失败:', err);
  42. console.log('⚠️ 尝试使用 redirectTo');
  43. // 降级使用 redirectTo
  44. wx.redirectTo({
  45. url: authPage,
  46. success: () => {
  47. console.log('✅ redirectTo 跳转成功');
  48. },
  49. fail: (err2) => {
  50. console.error('❌ redirectTo 也失败:', err2);
  51. wx.showToast({
  52. title: '跳转失败,请重试',
  53. icon: 'none'
  54. });
  55. }
  56. });
  57. }
  58. });
  59. }
  60. return false;
  61. } else {
  62. console.log('✅ 用户已登录');
  63. return true;
  64. }
  65. }
  66. /* 通过小程序wx.login获取openid和session_key */
  67. function wxLogin() {
  68. return new Promise((resolve, reject) => {
  69. wx.login({
  70. success: function (res) {
  71. if (res.code) {
  72. let url = 'https://server.fmode.cn/api/wxapp/auth_wxapp'
  73. wx.request({
  74. url: url,
  75. data: {
  76. c: getApp().globalData.company,
  77. code: res.code,
  78. appType: getApp().globalData.appType ? getApp().globalData.appType : ''
  79. },
  80. async success(res) {
  81. wx.setStorageSync("userInfo", res.data);
  82. resolve(res)
  83. },
  84. });
  85. }
  86. },
  87. fail: function (err) {
  88. wx.showToast({
  89. title: '服务器繁忙',
  90. icon: 'error'
  91. })
  92. resolve()
  93. }
  94. });
  95. })
  96. }
  97. // async function loginParse() {
  98. // let userInfo = wx.getStorageSync("userInfo");
  99. // let appId = getApp().globalData.appid
  100. // let username, password;
  101. // username = userInfo.openid; // openid作为用户名
  102. // password = username.substr(username.length - 6, 6); // 后六位作为登录密码
  103. // let query = new Parse.Query("_User")
  104. // query.equalTo(`wxapp.${appId}.openid`, username);
  105. // let current = await query.first()
  106. // if (current) {
  107. // await Parse.User.logIn(username, password);
  108. // }
  109. // }
  110. module.exports = {
  111. loginNow,
  112. // loginParse,
  113. wxLogin
  114. }