[TIL] firebase authentication

청학동버블티·2024년 12월 13일

Flutter 공부

목록 보기
11/18

이번 팀과제에서 GPS 기반 채팅 앱을 제작하게 되었다.
그중에서 난 로그인 및 회원가입 페이지를 제작하고
로그인 인증을 firebase authentication 기능으로 연동하는 역할을 맡았다.
이에 대해 정리해보려 한다.

(작업난이도를 고려해 DB에만 연동하는 기능으로 변경함)


<소개>

Authentication기능은 Firebase에서 기본적으로 지원해주는 기능이며
이를 통해 어플에 로그인 할때 인증을 할 수 있도록 도와준다. (익명인증도 가능)

이때 Firebase에서 허용된 소셜 로그인 제공 업체만 사용이 가능한데
메이저 업체로는 Google, Apple, Facebook 이 있고
이밖에는 Yahoo, Github, Twitter, MS 등이 있다.

(카카오, 네이버 인증도 연결할 수는 있지만 위 업체들보다는 연결 과정이 다소 복잡하다고 한다.)

이 기능을 통해서 UID 라는 사용자 인증코드를 생성/관리할 수 있어 편리하다.
이는 Firestore 데이터베이스를 사용하는 경우 보안규칙의 기준이 되기도 한다.


<인증방법>

참고사이트


플러그인을 설치해야 이 모든 기능을 사용할 수 있으므로 필수적으로 설치하도록 하자.

flutter pub add firebase_auth

우리는 이메일을 활용한 로그인방법을 활용할 예정이므로
firebase에서는 이메일/비밀번호 로그인방식을 선택해뒀다.


<사용자 생성>

createUserWithEmailAndPassword() 메서드를 호출하여 사용자를 생성 한다.

      userCredential =
          await FirebaseAuth.instance.createUserWithEmailAndPassword(
        email: emailController.text,
        password: pwController.text,
      );

스낵바형태로 에러를 출력하려면 아래와 같이 작성한다.


 try {
      UserCredential _credential =
          await _firebaseAuth.createUserWithEmailAndPassword(
              email: "abc@abc.kr", password: "1112323");
      if (_credential.user != null) {
        user = _credential.user;
      } else {
        showSnackbar(context, "Server Error");
      }
    } on FirebaseAuthException catch (error) {
      logger.e(error.code);
      String? _errorCode;
      switch (error.code) {
        case "email-already-in-use":
          _errorCode = error.code;
          break;
        case "invalid-email":
          _errorCode = error.code;
          break;
        case "weak-password":
          _errorCode = error.code;
          break;
        case "operation-not-allowed":
          _errorCode = error.code;
          break;
        default:
          _errorCode = null;
      }
      if (_errorCode != null) {
        showSnackbar(context, _errorCode);
      }
    }

0개의 댓글