ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Flutter Web Firebase Auth์—ฐ๋™
    Flutter ํ…Œํฌ 2024. 7. 8. 23:08

    1. Firebase๊ธฐ๋ณธ์—ฐ๋™์ด ์™„๋ฃŒ๋œ ์ƒํƒœ์—์„œ ํƒญ ๋ฉ”๋‰ด์—์„œ "๋นŒ๋“œ" -> "Authentication"์„ ํƒ

    2. ๊ธฐ๋ณธ์ ์ธ "์ด๋ฉ”์ผ/๋น„๋ฐ€๋ฒˆํ˜ธ"์„ ํƒ ํ›„ ์‚ฌ์šฉ์„ค์ • ํ›„ ์ €์žฅ ํด๋ฆญ

     

    3. Firebase AuthํŒจํ‚ค์ง€ ์„ค์น˜(https://pub.dev/packages/firebase_auth/install)

    firebase_auth: ^5.1.1

     

     

    4. Flutter ํ”„๋กœ์ ํŠธ์˜ web/index.html ์—ด๊ธฐ

     

    5. ํ•˜๋‹จ์˜ <body>ํƒœ๊ทธ ๋ฐ‘์— ์•„๋ž˜์˜ ์Šค๋‹ˆํŽซ ์ถ”๊ฐ€

    <!-- Firebase ๊ตฌ์„ฑ ์Šค๋‹ˆํŽซ -->
    <script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-app.js"></script>
    <script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-firestore.js"></script>
    <script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-analytics.js"></script>
    <script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-auth.js"></script>
    <script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-functions.js"></script>
    <script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-messaging.js"></script>
    <script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-storage.js"></script>

     

    6. ๋ฐฐํฌ ํ›„ ํ™•์ธ

    7. ํ™œ์šฉ ์˜ˆ์‹œ ์ฝ”๋“œ

    // ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ • ๋ฉ”์ผ ์ „์†ก
    Future<List> sendResetPasswordEmail(String email) async {
      try {
        await FirebaseAuth.instance.setLanguageCode("ko");  //์–ธ์–ด ์„ค์ •
        await FirebaseAuth.instance.sendPasswordResetEmail(email: email);
        return [true];
      } catch(e) {
        print('error sendResetPasswordEmail : ${e}');
        return [false, '${e}'];
      }
    }
    
    // ๋กœ๊ทธ์ธ ํ•จ์ˆ˜
    Future<List> login({required String email, required String password,}) async {
      try {
        try {
          UserCredential _cred = await FirebaseAuth.instance.signInWithEmailAndPassword(
              email: email, password: password);
          //๋กœ๊ทธ์ธ ์„ฑ๊ณต
          return [true, _cred.user?.uid, _cred.user?.email];
        } on FirebaseAuthException catch (e) {
          if (e.code == 'user-not-found') {
            //์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ด๋ฉ”์ผ
            return [false, '์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ด๋ฉ”์ผ์ž…๋‹ˆ๋‹ค.'];
          } else if (e.code == 'wrong-password') {
            //๋น„๋ฐ€๋ฒˆํ˜ธ ์˜ค๋ฅ˜
            return [false, '๋น„๋ฐ€๋ฒˆํ˜ธ ์˜ค๋ฅ˜'];
          }
        }
        return [false, '๋กœ๊ทธ์ธ ์‹คํŒจ'];
      } catch(e) {
        print('error login ${e}');
        return [false, '${e}'];
      }
    }
    
    // ์ด๋ฉ”์ผ,๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•œ ํšŒ์›๊ฐ€์ž…
    Future<List> signUpWithEmail({
      required String email,
      required String password,
      required context,
    }) async {
      try {
        UserCredential _cred = await FirebaseAuth.instance.createUserWithEmailAndPassword(
            email: email,
            password: password); //์ด ์ •๋ณด๋กœ ํšŒ์›๊ฐ€์ž…
        //ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต
        return [true, _cred.user?.uid, _cred.user?.email];
      } on FirebaseAuthException catch (e) {
        if (e.code == 'invalid-credential') {
          print('The supplied auth credential is incorrect, malformed or has expired.');
          return [false, '์ธ์ฆ ์ž๊ฒฉ ์ฆ๋ช…์ด ์ž˜๋ชป๋˜์—ˆ๊ฑฐ๋‚˜, ํ˜•์‹์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š๊ฑฐ๋‚˜, ๋งŒ๋ฃŒ๋˜์—ˆ์Œ'];
        } else if (e.code == 'weak-password') {
          //๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณด์•ˆ ๊ฐ•๋„ ๋ฌธ์ œ
          return [false, '๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋ณด์•ˆ์— ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค'];
        } else if (e.code == 'email-already-in-use') {
          //์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์ด๋ฉ”์ผ
          return [false, '์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์ด๋ฉ”์ผ'];
        }
        return [false, e.toString()];
      } catch (e) {
        print('on FirebaseAuthException catch (');
        return [false, e.toString()];
      }
    }
    
    // ๋กœ๊ทธ์•„์›ƒ์ฒ˜๋ฆฌ
    Future logoutUser() async {
      await FirebaseAuth.instance.signOut();
    }

    ๋Œ“๊ธ€

Designed by Tistory.