feat: 更新Podfile和Podfile.lock,移除Alamofire依赖并添加API认证机制文档
- 注释掉Podfile中的Alamofire依赖,更新Podfile.lock以反映更改。 - 在yana/APIs/API-README.md中新增自动认证Header机制的详细文档,描述其工作原理、实现细节及最佳实践。 - 在yana/yanaApp.swift中将print语句替换为debugInfo以增强调试信息的输出。 - 在API相关文件中实现用户认证状态检查和相关header的自动添加逻辑,提升API请求的安全性和用户体验。 - 更新多个文件中的日志输出,确保在DEBUG模式下提供详细的调试信息。
This commit is contained in:
@@ -110,9 +110,9 @@ struct IDLoginFeature {
|
||||
UserInfoManager.saveUserInfo(userInfo)
|
||||
}
|
||||
|
||||
print("✅ ID 登录 OAuth 认证成功")
|
||||
print("🔑 Access Token: \(accountModel.accessToken ?? "nil")")
|
||||
print("🆔 用户 UID: \(accountModel.uid ?? "nil")")
|
||||
debugInfo("✅ ID 登录 OAuth 认证成功")
|
||||
debugInfo("🔑 Access Token: \(accountModel.accessToken ?? "nil")")
|
||||
debugInfo("🆔 用户 UID: \(accountModel.uid ?? "nil")")
|
||||
|
||||
// 自动获取 ticket
|
||||
return .send(.requestTicket(accessToken: accountModel.accessToken!))
|
||||
@@ -145,7 +145,7 @@ struct IDLoginFeature {
|
||||
let response = try await apiService.request(ticketRequest)
|
||||
await send(.ticketResponse(.success(response)))
|
||||
} catch {
|
||||
print("❌ ID登录 Ticket 获取失败: \(error)")
|
||||
debugError("❌ ID登录 Ticket 获取失败: \(error)")
|
||||
await send(.ticketResponse(.failure(APIError.networkError(error.localizedDescription))))
|
||||
}
|
||||
}
|
||||
@@ -156,8 +156,8 @@ struct IDLoginFeature {
|
||||
state.ticketError = nil
|
||||
state.loginStep = .completed
|
||||
|
||||
print("✅ ID 登录完整流程成功")
|
||||
print("🎫 Ticket 获取成功: \(response.ticket ?? "nil")")
|
||||
debugInfo("✅ ID 登录完整流程成功")
|
||||
debugInfo("🎫 Ticket 获取成功: \(response.ticket ?? "nil")")
|
||||
|
||||
// 更新 AccountModel 中的 ticket 并保存
|
||||
if let ticket = response.ticket {
|
||||
@@ -171,7 +171,7 @@ struct IDLoginFeature {
|
||||
// 发送 Ticket 获取成功通知,触发导航到主页面
|
||||
NotificationCenter.default.post(name: .ticketSuccess, object: nil)
|
||||
} else {
|
||||
print("❌ AccountModel 不存在,无法保存 ticket")
|
||||
debugError("❌ AccountModel 不存在,无法保存 ticket")
|
||||
state.ticketError = "内部错误:账户信息丢失"
|
||||
state.loginStep = .failed
|
||||
}
|
||||
@@ -190,7 +190,7 @@ struct IDLoginFeature {
|
||||
state.isTicketLoading = false
|
||||
state.ticketError = error.localizedDescription
|
||||
state.loginStep = .failed
|
||||
print("❌ ID 登录 Ticket 获取失败: \(error.localizedDescription)")
|
||||
debugError("❌ ID 登录 Ticket 获取失败: \(error.localizedDescription)")
|
||||
return .none
|
||||
|
||||
case .clearTicketError:
|
||||
|
@@ -109,9 +109,9 @@ struct LoginFeature {
|
||||
let accountModel = AccountModel.from(loginData: loginData) {
|
||||
state.accountModel = accountModel
|
||||
|
||||
print("✅ OAuth 认证成功")
|
||||
print("🔑 Access Token: \(accountModel.accessToken ?? "nil")")
|
||||
print("🆔 用户 UID: \(accountModel.uid ?? "nil")")
|
||||
debugInfo("✅ OAuth 认证成功")
|
||||
debugInfo("🔑 Access Token: \(accountModel.accessToken ?? "nil")")
|
||||
debugInfo("🆔 用户 UID: \(accountModel.uid ?? "nil")")
|
||||
|
||||
// 自动获取 ticket
|
||||
return .send(.requestTicket(accessToken: accountModel.accessToken!))
|
||||
@@ -144,7 +144,7 @@ struct LoginFeature {
|
||||
let response = try await apiService.request(ticketRequest)
|
||||
await send(.ticketResponse(.success(response)))
|
||||
} catch {
|
||||
print("❌ Ticket 获取失败: \(error)")
|
||||
debugError("❌ Ticket 获取失败: \(error)")
|
||||
await send(.ticketResponse(.failure(APIError.networkError(error.localizedDescription))))
|
||||
}
|
||||
}
|
||||
@@ -155,8 +155,8 @@ struct LoginFeature {
|
||||
state.ticketError = nil
|
||||
state.loginStep = .completed
|
||||
|
||||
print("✅ 完整登录流程成功")
|
||||
print("🎫 Ticket 获取成功: \(response.ticket ?? "nil")")
|
||||
debugInfo("✅ 完整登录流程成功")
|
||||
debugInfo("🎫 Ticket 获取成功: \(response.ticket ?? "nil")")
|
||||
|
||||
// 更新 AccountModel 中的 ticket 并保存
|
||||
if let ticket = response.ticket {
|
||||
@@ -170,7 +170,7 @@ struct LoginFeature {
|
||||
// 发送 Ticket 获取成功通知,触发导航到主页面
|
||||
NotificationCenter.default.post(name: .ticketSuccess, object: nil)
|
||||
} else {
|
||||
print("❌ AccountModel 不存在,无法保存 ticket")
|
||||
debugError("❌ AccountModel 不存在,无法保存 ticket")
|
||||
state.ticketError = "内部错误:账户信息丢失"
|
||||
state.loginStep = .failed
|
||||
}
|
||||
@@ -189,7 +189,7 @@ struct LoginFeature {
|
||||
state.isTicketLoading = false
|
||||
state.ticketError = error.localizedDescription
|
||||
state.loginStep = .failed
|
||||
print("❌ Ticket 获取失败: \(error.localizedDescription)")
|
||||
debugError("❌ Ticket 获取失败: \(error.localizedDescription)")
|
||||
return .none
|
||||
|
||||
case .clearTicketError:
|
||||
|
@@ -238,13 +238,13 @@ struct RecoverPasswordHelper {
|
||||
let encryptionKey = "1ea53d260ecf11e7b56e00163e046a26"
|
||||
|
||||
guard let encryptedEmail = DESEncrypt.encryptUseDES(email, key: encryptionKey) else {
|
||||
print("❌ 邮箱DES加密失败")
|
||||
debugError("❌ 邮箱DES加密失败")
|
||||
return nil
|
||||
}
|
||||
|
||||
print("🔐 密码恢复邮箱DES加密成功")
|
||||
print(" 原始邮箱: \(email)")
|
||||
print(" 加密邮箱: \(encryptedEmail)")
|
||||
debugInfo("🔐 密码恢复邮箱DES加密成功")
|
||||
debugInfo(" 原始邮箱: \(email)")
|
||||
debugInfo(" 加密邮箱: \(encryptedEmail)")
|
||||
|
||||
// 使用type=3表示密码重置验证码
|
||||
return EmailGetCodeRequest(emailAddress: email, type: 3)
|
||||
@@ -261,16 +261,16 @@ struct RecoverPasswordHelper {
|
||||
|
||||
guard let encryptedEmail = DESEncrypt.encryptUseDES(email, key: encryptionKey),
|
||||
let encryptedPassword = DESEncrypt.encryptUseDES(newPassword, key: encryptionKey) else {
|
||||
print("❌ 密码重置DES加密失败")
|
||||
debugError("❌ 密码重置DES加密失败")
|
||||
return nil
|
||||
}
|
||||
|
||||
print("🔐 密码重置DES加密成功")
|
||||
print(" 原始邮箱: \(email)")
|
||||
print(" 加密邮箱: \(encryptedEmail)")
|
||||
print(" 验证码: \(code)")
|
||||
print(" 原始新密码: \(newPassword)")
|
||||
print(" 加密新密码: \(encryptedPassword)")
|
||||
debugInfo("🔐 密码重置DES加密成功")
|
||||
debugInfo(" 原始邮箱: \(email)")
|
||||
debugInfo(" 加密邮箱: \(encryptedEmail)")
|
||||
debugInfo(" 验证码: \(code)")
|
||||
debugInfo(" 原始新密码: \(newPassword)")
|
||||
debugInfo(" 加密新密码: \(encryptedPassword)")
|
||||
|
||||
return ResetPasswordRequest(
|
||||
email: email,
|
||||
|
@@ -55,10 +55,10 @@ struct SplashFeature {
|
||||
|
||||
// 根据认证状态发送相应的导航通知
|
||||
if status.canAutoLogin {
|
||||
print("🎉 自动登录成功,进入主页")
|
||||
debugInfo("🎉 自动登录成功,进入主页")
|
||||
NotificationCenter.default.post(name: .autoLoginSuccess, object: nil)
|
||||
} else {
|
||||
print("🔑 需要手动登录")
|
||||
debugInfo("🔑 需要手动登录")
|
||||
NotificationCenter.default.post(name: .autoLoginFailed, object: nil)
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user