auth.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. "use strict";
  2. const common_vendor = require("../common/vendor.js");
  3. const utils_api = require("./api.js");
  4. const TOKEN_KEY = "user_token";
  5. const USER_INFO_KEY = "user_info";
  6. const setToken = (token) => {
  7. common_vendor.index.setStorageSync(TOKEN_KEY, token);
  8. };
  9. const getToken = () => {
  10. return common_vendor.index.getStorageSync(TOKEN_KEY) || null;
  11. };
  12. const removeToken = () => {
  13. common_vendor.index.removeStorageSync(TOKEN_KEY);
  14. };
  15. const setUserInfo = (userInfo) => {
  16. common_vendor.index.setStorageSync(USER_INFO_KEY, JSON.stringify(userInfo));
  17. };
  18. const getUserInfo = () => {
  19. const userInfo = common_vendor.index.getStorageSync(USER_INFO_KEY);
  20. return userInfo ? JSON.parse(userInfo) : null;
  21. };
  22. const removeUserInfo = () => {
  23. common_vendor.index.removeStorageSync(USER_INFO_KEY);
  24. };
  25. const isLoggedIn = () => {
  26. return !!getToken();
  27. };
  28. const logout = () => {
  29. removeToken();
  30. removeUserInfo();
  31. };
  32. const wxAuthLogin = async (code, phoneCode) => {
  33. try {
  34. console.log("[微信登录] ========== 开始登录 ==========");
  35. console.log("[微信登录] 接收到的参数:");
  36. console.log(" - code:", code);
  37. console.log(" - phoneCode:", phoneCode);
  38. if (!code) {
  39. console.error("[微信登录] 错误:code为空!");
  40. throw new Error("微信登录code为空,请重试");
  41. }
  42. if (!phoneCode) {
  43. console.error("[微信登录] 错误:phoneCode为空!");
  44. throw new Error("手机号授权code为空,请重试");
  45. }
  46. const loginParams = {
  47. code,
  48. // 微信登录code,后端用于获取 openid 和 unionid
  49. phoneCode
  50. // 手机号授权code,后端用于获取手机号、昵称、头像等
  51. };
  52. console.log("[微信登录] 准备发送到后端的参数:", JSON.stringify(loginParams));
  53. const result = await utils_api.wxLogin(loginParams);
  54. console.log("[微信登录] 后端响应:", result);
  55. if (result.code === 200 && result.data && result.data.token) {
  56. setToken(result.data.token);
  57. if (result.data.userInfo) {
  58. setUserInfo(result.data.userInfo);
  59. }
  60. console.log("[微信登录] 登录成功,token已保存");
  61. common_vendor.index.showToast({
  62. title: "登录成功",
  63. icon: "success",
  64. duration: 1500
  65. });
  66. return true;
  67. } else {
  68. console.error("[微信登录] 后端返回格式错误:", result);
  69. throw new Error(result.message || "登录返回数据格式错误");
  70. }
  71. } catch (error) {
  72. console.error("[微信登录] ========== 登录失败 ==========");
  73. console.error("[微信登录] 错误详情:", error);
  74. common_vendor.index.showToast({
  75. title: error.message || "登录失败,请稍后重试",
  76. icon: "none",
  77. duration: 2e3
  78. });
  79. return false;
  80. }
  81. };
  82. const checkLogin = (callback) => {
  83. if (isLoggedIn()) {
  84. return true;
  85. }
  86. common_vendor.index.showModal({
  87. title: "登录提示",
  88. content: '此功能需要登录后使用,请点击"立即登录"按钮进行授权',
  89. showCancel: false,
  90. confirmText: "我知道了"
  91. });
  92. return false;
  93. };
  94. exports.checkLogin = checkLogin;
  95. exports.getUserInfo = getUserInfo;
  96. exports.isLoggedIn = isLoggedIn;
  97. exports.logout = logout;
  98. exports.setUserInfo = setUserInfo;
  99. exports.wxAuthLogin = wxAuthLogin;