35일차 과제 - rlatkddbs99/Flutter GitHub Wiki

  1. Firebase의 Authentication의 다음 메서드들의 각각 다른점을 구분하시오
    • FirebaseAuth.instance.authStateChanges()
    • FirebaseAuth.instance.userChanges()
    • FirebaseAuth.instance.idTokenChanges()

Firebase Auth는 보안 인증을 신규 또는 기존 Flutter 애플리케이션에 통합할 수 있는 다양한 방법과 유틸리티 제공. 사용자의 인증 상태를 알아야 함. 일단 호출되면 스트림은 사용자의 현재 인증 상태에 대한 즉각적인 이벤트를 제공한 다음 인증 상태가 변경될 때마다 후속 이벤트를 제공합니다.

  • FirebaseAuth.instance.authStateChanges() 다음과 같은 경우 이벤트가 발생합니다.

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

FirebaseAuth.instance
  .authStateChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });
  • FirebaseAuth.instance.idTokenChanges() 사용자의 토큰이 변경된 경우에도 이벤트 적용 가능 다음과 같은 경우 이벤트가 발생합니다.

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

FirebaseAuth.instance
  .idTokenChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });
  • FirebaseAuth.instance.userChanges() 앞에 두 메소드의 역할 뿐 아니라 currentUser에 대한 메소드가 호출되면 추가 이벤트도 실행시키는 듯 하다.

다음과 같은 경우 이벤트가 발생합니다.

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

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