Google I/O 2022에서 Firebase의 새로운 기능을 확인하세요. 자세히 알아보기

Flutter에서 Firebase 인증 시작하기

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

Firebase에 앱 연결

아직 설치하지 않았다면 Flutter용 Firebase SDK를 설치하고 초기화합니다 .

앱에 Firebase 인증 추가

  1. Flutter 프로젝트의 루트에서 다음 명령을 실행하여 플러그인을 설치합니다.

    flutter pub add firebase_auth
    
  2. 완료되면 Flutter 애플리케이션을 다시 빌드하십시오.

    flutter run
    
  3. Dart 코드에서 플러그인을 가져옵니다.

    import 'package:firebase_auth/firebase_auth.dart';
    

인증 공급자를 사용하려면 Firebase 콘솔 에서 활성화해야 합니다. Firebase 인증 섹션의 로그인 방법 페이지로 이동하여 이메일/비밀번호 로그인 및 앱에 대해 원하는 기타 ID 제공자를 활성화합니다.

(선택사항) Firebase 로컬 에뮬레이터 제품군으로 프로토타입 및 테스트

앱이 사용자를 인증하는 방법에 대해 이야기하기 전에 인증 기능을 프로토타이핑하고 테스트하는 데 사용할 수 있는 도구 모음인 Firebase 로컬 에뮬레이터 제품군을 소개하겠습니다. 인증 기술과 제공자 중에서 결정하고 있거나 인증 및 Firebase 보안 규칙을 사용하여 공개 및 비공개 데이터로 다양한 데이터 모델을 시도하거나 로그인 UI 디자인을 프로토타이핑하는 경우 라이브 서비스를 배포하지 않고 로컬에서 작업할 수 있는 것이 좋은 아이디어가 될 수 있습니다. .

인증 에뮬레이터는 로컬 에뮬레이터 제품군의 일부로, 앱이 에뮬레이트된 데이터베이스 콘텐츠 및 구성은 물론 선택적으로 에뮬레이트된 프로젝트 리소스(함수, 기타 데이터베이스 및 보안 규칙)와 상호 작용할 수 있도록 합니다.

인증 에뮬레이터를 사용하려면 다음 몇 단계만 수행하면 됩니다.

  1. 에뮬레이터에 연결하기 위해 앱의 테스트 구성에 코드 줄을 추가합니다.

  2. 로컬 프로젝트 디렉토리의 루트에서 firebase emulators:start 를 실행합니다.

  3. 대화형 프로토타이핑을 위해 로컬 에뮬레이터 제품군 UI를 사용하거나 비대화형 테스트를 위해 인증 에뮬레이터 REST API를 사용합니다.

  4. useAuthEmulator() 를 호출하여 에뮬레이터 주소와 포트를 지정합니다.

    Future<void> main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
    
    // Ideal time to initialize
    await FirebaseAuth.instance.useAuthEmulator('localhost', 9099);
    //...
    }
    

자세한 가이드는 앱을 인증 에뮬레이터에 연결 에서 확인할 수 있습니다. 자세한 내용은 로컬 에뮬레이터 제품군 소개 를 참조하십시오.

이제 사용자를 인증하는 방법을 계속해 보겠습니다.

현재 인증 상태 확인

Firebase Auth는 보안 인증을 신규 또는 기존 Flutter 애플리케이션에 통합할 수 있는 다양한 방법과 유틸리티를 제공합니다. 대부분의 경우 로그인 또는 로그아웃 여부와 같은 사용자의 인증 상태 에 대해 알아야 합니다.

Firebase 인증을 사용하면 Stream 을 통해 이 상태를 실시간으로 구독할 수 있습니다. 스트림은 호출되면 사용자의 현재 인증 상태에 대한 즉각적인 이벤트를 제공한 다음 인증 상태가 변경될 때마다 후속 이벤트를 제공합니다.

인증 상태 변경을 수신하는 세 가지 방법이 있습니다.

authStateChanges()

이러한 변경 사항을 구독하려면 FirebaseAuth 인스턴스에서 authStateChanges() 메서드를 호출하세요.

FirebaseAuth.instance
  .authStateChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

다음이 발생하면 이벤트가 시작됩니다.

  • 리스너가 등록된 직후입니다.
  • 사용자가 로그인한 경우.
  • 현재 사용자가 로그아웃된 경우.

idTokenChanges()

이러한 변경 사항을 구독하려면 FirebaseAuth 인스턴스에서 idTokenChanges() 메서드를 호출하세요.

FirebaseAuth.instance
  .idTokenChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

다음이 발생하면 이벤트가 시작됩니다.

  • 리스너가 등록된 직후입니다.
  • 사용자가 로그인한 경우.
  • 현재 사용자가 로그아웃된 경우.
  • 현재 사용자의 토큰에 변경 사항이 있는 경우.

userChanges()

이러한 변경 사항을 구독하려면 FirebaseAuth 인스턴스에서 userChanges() 메서드를 호출하세요.

FirebaseAuth.instance
  .userChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

다음이 발생하면 이벤트가 시작됩니다.

  • 리스너가 등록된 직후입니다.
  • 사용자가 로그인한 경우.
  • 현재 사용자가 로그아웃된 경우.
  • 현재 사용자의 토큰에 변경 사항이 있는 경우.
  • FirebaseAuth.instance.currentUser 에서 제공하는 다음 메소드가 호출될 때:
    • reload()
    • unlink()
    • updateEmail()
    • updatePassword()
    • updatePhoneNumber()
    • updateProfile()

인증 상태 지속

모든 플랫폼용 Firebase SDK는 앱을 다시 시작하거나 페이지를 새로고침해도 사용자의 인증 상태가 유지되도록 기본 지원을 제공합니다.

Android 및 iOS와 같은 기본 플랫폼에서는 이 동작을 구성할 수 없으며 앱이 다시 시작될 때까지 사용자의 인증 상태가 기기에서 유지됩니다. 사용자는 기기 설정을 사용하여 앱에 캐시된 데이터를 지울 수 있습니다. 그러면 저장 중인 기존 상태가 지워집니다.

웹 플랫폼에서 사용자의 인증 상태는 IndexedDB 에 저장됩니다. Persistence.LOCAL 을 사용하여 로컬 저장소에 데이터를 저장하도록 지속성을 변경할 수 있습니다. 필요한 경우 현재 세션에 대한 인증 상태만 유지하거나 전혀 유지하지 않도록 이 기본 동작을 변경할 수 있습니다. 이러한 설정을 구성하려면 FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL); . setPersistence(Persistence.NONE) 를 사용하여 각 인증 인스턴스의 지속성을 계속 업데이트할 수 있습니다.

// Disable persistence on web platforms. Must be called on initialization:
final auth = FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.NONE);
// To change it after initialization, use `setPersistence()`:
await auth.setPersistence(Persistence.LOCAL);

다음 단계

지원되는 ID 및 인증 서비스로 사용자 로그인 및 등록에 대한 가이드를 살펴보십시오.