1
This commit is contained in:
+63
-12
@@ -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) {
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
Reference in New Issue
Block a user