This commit is contained in:
2025-09-05 21:39:28 +08:00
parent 089c9f8494
commit 913c2ba036
4 changed files with 99 additions and 280 deletions
+63 -12
View File
@@ -81,22 +81,27 @@ export default {
// 错误处理函数
const handleError = (error) => {
let errorMessage = '授权失败,请重试'
let shouldReturnToLogin = false
console.error('手机号授权错误详情:', error)
if (error.message) {
if (error.message.includes('网络')) {
errorMessage = '网络连接异常,请检查网络后重试'
} else if (error.message.includes('登录状态已过期')) {
} else if (error.message.includes('登录状态已过期') || error.message.includes('重新获取微信登录code失败')) {
errorMessage = '登录状态已过期,请重新登录'
// 3秒后自动返回profile页面
setTimeout(() => {
uni.reLaunch({
url: '/pages/profile/profile'
})
}, 3000)
shouldReturnToLogin = true
} else if (error.message.includes('API返回数据格式错误')) {
errorMessage = '服务器响应异常,请稍后重试'
} else if (error.message.includes('用户拒绝')) {
errorMessage = '需要授权手机号才能继续使用'
} else if (error.code === 401) {
errorMessage = '授权已过期,请重新登录'
shouldReturnToLogin = true
} else if (error.code === 500) {
errorMessage = '服务器错误,请稍后重试'
} else {
errorMessage = error.message
errorMessage = error.message || '授权失败,请重试'
}
}
@@ -105,6 +110,15 @@ export default {
icon: 'none',
duration: 3000
})
// 如果需要返回登录页面
if (shouldReturnToLogin) {
setTimeout(() => {
uni.reLaunch({
url: '/pages/profile/profile'
})
}, 3000)
}
}
// 方法定义
@@ -120,12 +134,34 @@ export default {
if (e.detail.errMsg === 'getPhoneNumber:ok') {
isProcessing = true
authorizing.value = true
try {
// 获取微信登录code
const loginCode = uni.getStorageSync(STORAGE_KEYS.WX_LOGIN_CODE)
let loginCode = uni.getStorageSync(STORAGE_KEYS.WX_LOGIN_CODE)
// 检查登录code是否存在和有效
if (!loginCode) {
throw new Error('登录状态已过期,请重新登录')
console.warn('微信登录code不存在,尝试重新获取')
// 尝试重新获取微信登录code
try {
const loginRes = await new Promise((resolve, reject) => {
uni.login({
success: resolve,
fail: reject
})
})
if (loginRes.code) {
loginCode = loginRes.code
uni.setStorageSync(STORAGE_KEYS.WX_LOGIN_CODE, loginCode)
console.log('重新获取微信登录code成功')
} else {
throw new Error('重新获取微信登录code失败')
}
} catch (loginError) {
console.error('重新获取微信登录code失败:', loginError)
throw new Error('登录状态已过期,请重新登录')
}
}
// 调用后端API验证手机号
@@ -135,12 +171,27 @@ export default {
iv: e.detail.iv
}
console.log(phoneData)
console.log('准备调用手机号授权API:', {
hasCode: !!phoneData.code,
hasEncryptedData: !!phoneData.encryptedData,
hasIv: !!phoneData.iv,
apiUrl: '/auth/wx-phone-login'
})
// 调用真实API接口
const result = await wxPhoneLogin(phoneData, {
custom: {
loading: false // 使用页面自己的loading状态
loading: false, // 使用页面自己的loading状态
catch: true // 确保错误能被catch到
}
})
console.log('手机号授权API调用成功:', {
hasToken: !!(result && result.token),
hasUserInfo: !!(result && result.userInfo)
})
// 使用状态管理工具保存手机号授权数据
if (result && result.token) {
+5 -19
View File
@@ -194,28 +194,14 @@ export default {
}
const checkLogin = () => {
// 检查登录状态
// 检查登录状态(仅用于显示,不强制跳转)
console.log('Profile页面登录状态检查')
// 检查是否需要继续未完成的登录流程
const nextPage = checkAndResumeLogin()
if (nextPage) {
console.log('检测到未完成的登录流程,跳转到:', nextPage)
const currentStep = getCurrentLoginStep()
console.log('当前登录步骤:', currentStep)
// 显示提示信息
uni.showToast({
title: '继续完成登录流程',
icon: 'none',
duration: 1500
})
setTimeout(() => {
uni.navigateTo({
url: nextPage
})
}, 1500)
return
}
// 不再自动跳转,让用户自主选择是否登录
// 登录状态会在调用需要鉴权的接口时自动处理
// 检查是否已完成登录
if (isLoginCompleted()) {