From fc5735964f90054f7458d4263297e160fa2b6846 Mon Sep 17 00:00:00 2001 From: jinyaqiu Date: Mon, 18 Aug 2025 16:36:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=8B=B9=E6=9E=9C=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wake.xcodeproj/project.pbxproj | 12 +- .../UserInterfaceState.xcuserstate | Bin 99693 -> 101329 bytes wake/Info.plist | 20 +- wake/View/Login/Login.swift | 391 ++++++++++++------ wake/wake.entitlements | 10 + 5 files changed, 285 insertions(+), 148 deletions(-) create mode 100644 wake/wake.entitlements diff --git a/wake.xcodeproj/project.pbxproj b/wake.xcodeproj/project.pbxproj index e45c27e..b8dfd9a 100644 --- a/wake.xcodeproj/project.pbxproj +++ b/wake.xcodeproj/project.pbxproj @@ -291,13 +291,15 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = wake/wake.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = GB3VPJ54BD; + DEVELOPMENT_TEAM = 392N3QB7XR; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = wake/Info.plist; INFOPLIST_KEY_LSApplicationCategoryType = ""; + INFOPLIST_KEY_NSUserTrackingUsageDescription = "我们需要访问您的Apple ID信息来为您提供登录服务"; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchScreen_Generation = YES; @@ -307,7 +309,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.memowake.wake; + PRODUCT_BUNDLE_IDENTIFIER = com.memowake.fairclip2025; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; @@ -320,13 +322,15 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = wake/wake.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = GB3VPJ54BD; + DEVELOPMENT_TEAM = 392N3QB7XR; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = wake/Info.plist; INFOPLIST_KEY_LSApplicationCategoryType = ""; + INFOPLIST_KEY_NSUserTrackingUsageDescription = "我们需要访问您的Apple ID信息来为您提供登录服务"; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchScreen_Generation = YES; @@ -336,7 +340,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.memowake.wake; + PRODUCT_BUNDLE_IDENTIFIER = com.memowake.fairclip2025; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; diff --git a/wake.xcodeproj/project.xcworkspace/xcuserdata/elliwood.xcuserdatad/UserInterfaceState.xcuserstate b/wake.xcodeproj/project.xcworkspace/xcuserdata/elliwood.xcuserdatad/UserInterfaceState.xcuserstate index 39fe2f50bdcb3ef1598445580ab4d405919a64b8..0aac839299b392f94797a32f1b7cc4e331cff723 100644 GIT binary patch literal 101329 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 literal 99693 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 w!yf9 - UIAppFonts - - Quicksand x.ttf - SankeiCutePopanime.ttf - - - + ASAuthorizationAppleIDProvider + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleURLTypes @@ -18,14 +13,17 @@ - - ASAuthorizationAppleIDProvider - $(PRODUCT_BUNDLE_IDENTIFIER) - LSApplicationQueriesSchemes appleid appleauth + NSAppleIDUsageDescription + Sign in with Apple is used to authenticate your account + UIAppFonts + + Quicksand x.ttf + SankeiCutePopanime.ttf + diff --git a/wake/View/Login/Login.swift b/wake/View/Login/Login.swift index d9d4dde..895447e 100644 --- a/wake/View/Login/Login.swift +++ b/wake/View/Login/Login.swift @@ -1,165 +1,290 @@ import SwiftUI import AuthenticationServices import Alamofire +import CryptoKit -struct Post: Codable { - let id: Int - let title: String - let body: String - let userId: Int -} - -struct Login: Encodable { - let account: String - let password: String -} - +/// Main login view that handles Apple Sign In struct LoginView: View { + // MARK: - Properties @Environment(\.dismiss) private var dismiss - @State private var showModal = false @State private var isLoading = false + @State private var showError = false + @State private var errorMessage = "" + @State private var currentNonce: String? + // MARK: - Body var body: some View { - NavigationView { - ZStack { - VStack { - // App logo or title - VStack { - Image(systemName: "person.circle.fill") - .resizable() - .frame(width: 80, height: 80) - .foregroundColor(.blue) - .padding(.bottom, 20) - - Text("Welcome") - .font(.largeTitle) - .fontWeight(.bold) - .padding(.bottom, 40) - } - - // Apple Sign In Button - SignInWithAppleButton( - onRequest: { request in - request.requestedScopes = [.fullName, .email] - }, - onCompletion: { result in - switch result { - case .success(let authResults): - print("Authorization successful: \(authResults)") - // Handle successful authentication - // You can get user details from authResults.credential - if let appleIDCredential = authResults.credential as? ASAuthorizationAppleIDCredential { - let userId = appleIDCredential.user - let email = appleIDCredential.email - let fullName = appleIDCredential.fullName - - print("User ID: \(userId)") - print("Email: \(email ?? "No email")") - print("Name: \(fullName?.givenName ?? "") \(fullName?.familyName ?? "")") - - // TODO: Send this information to your backend - // For example: - // loginWithApple(userId: userId, email: email, name: "\(fullName?.givenName ?? "") \(fullName?.familyName ?? "")") - - // Dismiss the login view after successful login - DispatchQueue.main.async { - self.dismiss() - } - } - - case .failure(let error): - print("Authorization failed: \(error.localizedDescription)") - // Handle error - } - } - ) - .signInWithAppleButtonStyle(.black) // or .white, .whiteOutline - .frame(height: 50) - .padding(.horizontal, 40) - .padding(.bottom, 20) - - // Terms and Privacy Policy - VStack(spacing: 8) { - Text("By continuing, you agree to our") - .font(.caption) - .foregroundColor(.gray) - - HStack(spacing: 16) { - Button("Terms of Service") { - // Open terms URL - if let url = URL(string: "https://yourwebsite.com/terms") { - UIApplication.shared.open(url) - } - } - .font(.caption) - .foregroundColor(.blue) - - Text("•") - .foregroundColor(.gray) - - Button("Privacy Policy") { - // Open privacy policy URL - if let url = URL(string: "https://yourwebsite.com/privacy") { - UIApplication.shared.open(url) - } - } - .font(.caption) - .foregroundColor(.blue) - } - } - .padding(.bottom, 40) - - Spacer() - } - .padding() - .navigationBarHidden(true) - .navigationBarBackButtonHidden(true) - - // Loading indicator - if isLoading { - Color.black.opacity(0.4) - .edgesIgnoringSafeArea(.all) - - ProgressView() - .scaleEffect(1.5) - .progressViewStyle(CircularProgressViewStyle(tint: .white)) - } + ZStack { + // Background + Color(.systemBackground) + .edgesIgnoringSafeArea(.all) + + // Main content + VStack(spacing: 24) { + Spacer() + appHeaderView() + signInButton() + Spacer() + termsAndPrivacyView() } + .padding() + .alert(isPresented: $showError) { + Alert( + title: Text("Error"), + message: Text(errorMessage), + dismissButton: .default(Text("OK")) + ) + } + + // Loading indicator + if isLoading { + loadingView() + } + } + .navigationBarHidden(true) + } + + // MARK: - View Components + + /// App header with icon and welcome text + private func appHeaderView() -> some View { + VStack(spacing: 16) { + Image(systemName: "person.circle.fill") + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 80, height: 80) + .foregroundColor(.blue) + + Text("Welcome to Wake") + .font(.largeTitle) + .fontWeight(.bold) + + Text("Sign in to continue") + .font(.subheadline) + .foregroundColor(.secondary) + } + .padding(.bottom, 40) + } + + /// Apple Sign In button + private func signInButton() -> some View { + SignInWithAppleButton( + onRequest: { request in + // Generate nonce for security + let nonce = String.randomURLSafeString(length: 32) + self.currentNonce = nonce + + // Configure the request + request.requestedScopes = [.fullName, .email] + request.nonce = self.sha256(nonce) + }, + onCompletion: handleAppleSignIn + ) + .signInWithAppleButtonStyle(.black) + .frame(height: 50) + .padding(.horizontal, 40) + .cornerRadius(10) + } + + /// Terms and Privacy policy links + private func termsAndPrivacyView() -> some View { + VStack(spacing: 8) { + Text("By continuing, you agree to our") + .font(.caption) + .foregroundColor(.secondary) + + HStack(spacing: 16) { + Button("Terms of Service") { + openURL("https://yourwebsite.com/terms") + } + .font(.caption) + .foregroundColor(.blue) + + Text("•") + .foregroundColor(.secondary) + + Button("Privacy Policy") { + openURL("https://yourwebsite.com/privacy") + } + .font(.caption) + .foregroundColor(.blue) + } + } + .padding(.bottom, 24) + } + + /// Loading overlay view + private func loadingView() -> some View { + return ZStack { + Color.black.opacity(0.4) + .edgesIgnoringSafeArea(.all) + + ProgressView() + .scaleEffect(1.5) + .progressViewStyle(CircularProgressViewStyle(tint: .white)) } } - // Example function to handle login with your backend - private func loginWithApple(userId: String, email: String?, name: String) { + // MARK: - Apple Sign In Handlers + + /// Handles the result of Apple Sign In + private func handleAppleSignIn(result: Result) { + switch result { + case .success(let authResults): + processAppleIDCredential(authResults.credential) + case .failure(let error): + handleSignInError(error) + } + } + + /// Processes the Apple ID credential + private func processAppleIDCredential(_ credential: ASAuthorizationCredential) { + guard let appleIDCredential = credential as? ASAuthorizationAppleIDCredential else { + showError(message: "Unable to process Apple ID credentials") + return + } + + // Get user data + let userId = appleIDCredential.user + let email = appleIDCredential.email ?? "" + let fullName = [ + appleIDCredential.fullName?.givenName, + appleIDCredential.fullName?.familyName + ] + .compactMap { $0 } + .joined(separator: " ") + + // Get the identity token + guard let identityTokenData = appleIDCredential.identityToken, + let identityToken = String(data: identityTokenData, encoding: .utf8) else { + showError(message: "Unable to fetch identity token") + return + } + + // Get the authorization code (optional) + var authCode: String? = nil + if let authCodeData = appleIDCredential.authorizationCode { + authCode = String(data: authCodeData, encoding: .utf8) + } + + // Proceed with backend authentication + authenticateWithBackend( + userId: userId, + email: email, + name: fullName, + identityToken: identityToken, + authCode: authCode + ) + } + + // MARK: - Network Operations + + /// Authenticates the user with the backend server + private func authenticateWithBackend( + userId: String, + email: String, + name: String, + identityToken: String, + authCode: String? + ) { isLoading = true - // Replace with your actual API endpoint - let url = "https://your-api-endpoint.com/auth/apple" - let parameters: [String: Any] = [ + let url = "https://your-api-endpoint.com/api/auth/apple" + var parameters: [String: Any] = [ "appleUserId": userId, - "email": email ?? "", + "email": email, "name": name, - // Add any other required parameters + "identityToken": identityToken ] + // Add authorization code if available + if let authCode = authCode { + parameters["authorizationCode"] = authCode + } + AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default) .validate() .responseJSON { response in - isLoading = false + self.isLoading = false switch response.result { case .success(let value): - print("Login successful: \(value)") - // Handle successful login (e.g., save auth token, navigate to home screen) - dismiss() - + print("Authentication successful: \(value)") + self.handleSuccessfulAuthentication() case .failure(let error): - print("Login failed: \(error.localizedDescription)") - // Show error message to user + self.handleAuthenticationError(error) } } } + + // MARK: - Helper Methods + + /// Handles successful authentication + private func handleSuccessfulAuthentication() { + DispatchQueue.main.async { + self.dismiss() + } + } + + /// Handles sign in errors + private func handleSignInError(_ error: Error) { + let errorMessage = (error as NSError).localizedDescription + print("Apple Sign In failed: \(errorMessage)") + showError(message: "Sign in failed: \(error.localizedDescription)") + } + + /// Handles authentication errors + private func handleAuthenticationError(_ error: AFError) { + let errorMessage = error.localizedDescription + print("API Error: \(errorMessage)") + showError(message: "Failed to sign in: \(errorMessage)") + } + + /// Shows error message to the user + private func showError(message: String) { + DispatchQueue.main.async { + self.errorMessage = message + self.showError = true + } + } + + /// Opens a URL in Safari + private func openURL(_ string: String) { + guard let url = URL(string: string) else { return } + UIApplication.shared.open(url) + } + + private func sha256(_ input: String) -> String { + let inputData = Data(input.utf8) + let hashedData = SHA256.hash(data: inputData) + let hashString = hashedData.compactMap { String(format: "%02x", $0) }.joined() + return hashString + } } -#Preview { - LoginView() +// MARK: - String Extension for Random String Generation + +extension String { + /// Generates a random string of the specified length using URL-safe characters + /// - Parameter length: The length of the random string to generate + /// - Returns: A random string containing URL-safe characters + static func randomURLSafeString(length: Int) -> String { + let characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~" + var randomString = "" + + for _ in 0.. + + + + com.apple.developer.applesignin + + Default + + +