Firebase 인증을 사용하면 사용자가 이메일 주소와 비밀번호를 사용하여 Firebase에 인증하고 앱의 비밀번호 기반 계정을 관리할 수 있습니다.
시작하기 전에
Swift Package Manager를 사용하여 Firebase 종속 항목을 설치하고 관리합니다.
- Xcode에서 앱 프로젝트를 연 상태에서 File > Add Packages 로 이동합니다.
- 메시지가 표시되면 Firebase Apple 플랫폼 SDK 저장소를 추가합니다.
- Firebase 인증 라이브러리를 선택합니다.
- 완료되면 Xcode는 자동으로 백그라운드에서 종속성을 해결하고 다운로드하기 시작합니다.
https://github.com/firebase/firebase-ios-sdk
다음으로 몇 가지 구성 단계를 수행합니다.
- 앱을 Firebase 프로젝트에 아직 연결하지 않았다면 Firebase 콘솔 에서 연결하세요.
- 이메일/비밀번호 로그인 활성화:
- Firebase 콘솔 에서 인증 섹션을 엽니다.
- 로그인 방법 탭에서 이메일/비밀번호 로그인 방법을 활성화하고 저장 을 클릭합니다.
암호 기반 계정 만들기
비밀번호를 사용하여 새 사용자 계정을 만들려면 앱의 로그인 활동에서 다음 단계를 완료하세요.
-
UIApplicationDelegate
에서 FirebaseCore 모듈과 앱 대리인이 사용하는 다른 모든FirebaseCore
모듈 을 가져옵니다. 예를 들어 Cloud Firestore 및 인증을 사용하려면 다음과 같이 하세요.SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
빠른
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
목표-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- 앱 대리인의
application(_:didFinishLaunchingWithOptions:)
메서드에서FirebaseApp
공유 인스턴스를 구성합니다.SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
빠른
// Use Firebase library to configure APIs FirebaseApp.configure()
목표-C
// Use Firebase library to configure APIs [FIRApp configure];
- SwiftUI를 사용하는 경우 애플리케이션 대리자를 생성하고
UIApplicationDelegateAdaptor
또는NSApplicationDelegateAdaptor
를 통해App
구조체에 연결해야 합니다. 앱 대리자 스위즐링도 비활성화해야 합니다. 자세한 내용은 SwiftUI 지침 을 참조하십시오.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- 새 사용자가 앱의 가입 양식을 사용하여 가입하면 새 계정의 암호가 올바르게 입력되었고 복잡성 요구 사항을 충족하는지 확인하는 등 앱에서 요구하는 새 계정 확인 단계를 완료하십시오.
- 새 사용자의 이메일 주소와 암호를
createUser
에 전달하여 새 계정을 만듭니다.새 계정이 성공적으로 생성되면 사용자가 로그인되고 콜백 메서드에 전달된 결과 개체에서 사용자의 계정 데이터를 가져올 수 있습니다.빠른
Auth.auth().createUser(withEmail: email, password: password) { authResult, error in // ... }
목표-C
[[FIRAuth auth] createUserWithEmail:email password:password completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
이메일 주소와 비밀번호로 사용자 로그인
암호로 사용자를 로그인하는 단계는 새 계정을 만드는 단계와 유사합니다. 앱의 로그인 활동에서 다음을 수행합니다.
-
UIApplicationDelegate
에서 FirebaseCore 모듈과 앱 대리인이 사용하는 다른 모든FirebaseCore
모듈 을 가져옵니다. 예를 들어 Cloud Firestore 및 인증을 사용하려면 다음과 같이 하세요.SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
빠른
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
목표-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- 앱 대리인의
application(_:didFinishLaunchingWithOptions:)
메서드에서FirebaseApp
공유 인스턴스를 구성합니다.SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
빠른
// Use Firebase library to configure APIs FirebaseApp.configure()
목표-C
// Use Firebase library to configure APIs [FIRApp configure];
- SwiftUI를 사용하는 경우 애플리케이션 대리자를 생성하고
UIApplicationDelegateAdaptor
또는NSApplicationDelegateAdaptor
를 통해App
구조체에 연결해야 합니다. 앱 대리자 스위즐링도 비활성화해야 합니다. 자세한 내용은 SwiftUI 지침 을 참조하십시오.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- 사용자가 앱에 로그인하면 사용자의 이메일 주소와 비밀번호를
signIn
에 전달합니다.사용자가 성공적으로 로그인하면 콜백 메서드에 전달된 결과 개체에서 사용자의 계정 데이터를 가져올 수 있습니다.빠른
Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in guard let strongSelf = self else { return } // ... }
목표-C
[[FIRAuth auth] signInWithEmail:self->_emailField.text password:self->_passwordField.text completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
권장: 이메일 열거 보호 활성화
이메일 주소를 매개변수로 사용하는 일부 Firebase 인증 방법은 이메일 주소를 등록해야 할 때(예: 이메일 주소와 비밀번호로 로그인할 때) 등록을 취소하거나 사용하지 않아야 할 때(예: 사용자의 이메일 주소를 변경할 때). 이는 사용자에게 특정 해결 방법을 제안하는 데 도움이 될 수 있지만 악의적인 행위자가 사용자가 등록한 이메일 주소를 발견하는 데 악용될 수도 있습니다.
이 위험을 완화하려면 Google Cloud gcloud
도구를 사용하여 프로젝트에 대한 이메일 열거 보호를 사용 설정 하는 것이 좋습니다. 이 기능을 활성화하면 Firebase 인증의 오류 보고 동작이 변경됩니다. 앱이 보다 구체적인 오류에 의존하지 않는지 확인하세요.
다음 단계
사용자가 처음으로 로그인하면 새 사용자 계정이 생성되고 사용자가 로그인할 때 사용한 자격 증명(즉, 사용자 이름과 암호, 전화 번호 또는 인증 공급자 정보)에 연결됩니다. 이 새 계정은 Firebase 프로젝트의 일부로 저장되며 사용자 로그인 방법에 관계없이 프로젝트의 모든 앱에서 사용자를 식별하는 데 사용할 수 있습니다.
Firebase 실시간 데이터베이스 및 Cloud Storage 보안 규칙 에서
auth
변수에서 로그인한 사용자의 고유한 사용자 ID를 가져와 사용자가 액세스할 수 있는 데이터를 제어하는 데 사용할 수 있습니다.
인증 공급자 자격 증명을 기존 사용자 계정에 연결하여 사용자가 여러 인증 공급자를 사용하여 앱에 로그인하도록 허용할 수 있습니다.
사용자를 로그아웃하려면 signOut:
을 호출합니다.
빠른
let firebaseAuth = Auth.auth() do { try firebaseAuth.signOut() } catch let signOutError as NSError { print("Error signing out: %@", signOutError) }
목표-C
NSError *signOutError; BOOL status = [[FIRAuth auth] signOut:&signOutError]; if (!status) { NSLog(@"Error signing out: %@", signOutError); return; }
인증 오류의 전체 범위에 대한 오류 처리 코드를 추가할 수도 있습니다. 오류 처리 를 참조하십시오.