패키지, 저장소 및 앱 카테고리 검색

firebase_auth_simplify 표지
패키지 상세v3.0.1

firebase_auth_simplify

Firebase Auth 패키지의 고수준 프레임워크로 여러 줄의 코드를 한 줄로 감싸서 로그인 및 로그아웃 기능을 쉽게 사용할 수 있도록 합니다.

AndroidiOS
30일 다운로드
65
좋아요
23
Pub 점수
130

패키지 설치

flutter pub add firebase_auth_simplify

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

Firebase Auth를 간소화한 래퍼로, 최소한의 코드로 인증 워크플로우를 단순화합니다. 복잡한 설정과 반복 코드를 로그인 및 로그아웃 작업을 위한 한 줄의 코드로 줄여 빠른 개발에 적합합니다. 이 패키지는 일반적인 인증 패턴을 추상화함으로써 개발자의 생산성을 향상시키며, 보안성과 Firebase 핵심 서비스와의 호환성을 유지합니다. Android 및 iOS 플랫폼 간의 원활한 통합을 위해 설계되어 유연성을 희생하지 않고도 안전한 사용자 관리를 지원합니다.

사용 사례

  • 새 앱에서 빠른 인증 설정
  • 기존 Firebase Auth 구현에서 부가 코드 줄이기
  • 사용자 로그인/로그아웃을 통한 빠른 프로토타이핑
  • 다중 플랫폼 인증 로직 간소화
  • 빠른 온보딩 흐름 활성화

주요 기능

  • 단일 줄 로그인 및 로그아웃
  • 필수 최소 구성
  • 크로스 플랫폼 지원 (Android 및 iOS)
  • 보안 세션 처리
  • 깨끗하고 가독성 있는 코드 구조

적합한 대상

  • 초보자 플러터 개발자
  • 빠른 인증 구현이 필요한 프로젝트
  • 간단한 인증 요구 사항을 가진 앱
  • 개발 속도를 우선시하는 팀
  • 프로토타입 및 MVP

고려 사항

  • 원시 Firebase Auth에 비해 사용자 지정이 제한적
  • 고급 인증 시나리오에 적합하지 않을 수 있습니다
  • 하위 Firebase Auth의 안정성에 따라 달라집니다
  • 저수준 인증 이벤트에 대한 제어가 적음
  • 엄격한 규제 또는 복잡한 인증 시스템에는 권장되지 않습니다

원본 README

연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.

Firebase Authentication Simplify

Wrapper package of framework of Firebase Auth package that wraps several lines of codes to one line in order to easily use sign-in function.

Why/Who should use this

You may want to use firebase_auth package directly if you need specific customization on sign-in/out logic.
However, although the most of usecases have almost the same signing-in and out codes, it is pain to write redundant codes everytime even if it is just a several lines of code. Especially, when you provide more than 2 sign-in methods.

You will basically write some codes like below for Each of sign-in methods, and you want to manage it seperatly from the widget you use.

// Example of typical Google sign in (What you will do with original packages)

final GoogleSignIn _googleSignIn = GoogleSignIn();
final FirebaseAuth _auth = FirebaseAuth.instance;

Future<FirebaseUser> _handleSignIn() async {
  final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
  final GoogleSignInAuthentication googleAuth = await googleUser.authentication;

  final AuthCredential credential = GoogleAuthProvider.getCredential(
    accessToken: googleAuth.accessToken,
    idToken: googleAuth.idToken,
  );

  final FirebaseUser user = (await _auth.signInWithCredential(credential)).user;
  print("signed in " + user.displayName);
  return user;
}

_handleSignIn()
    .then((FirebaseUser user) => print(user))
    .catchError((e) => print(e));

_handleSignOut() {
    ...
}

This package has nothing fancy but just do the dirty things for you and what you will have is something like:

import 'package:firebase_auth_simplify/firebase_auth_simplify.dart';

// Google
FirebaseAuthProvider.signInWith(GoogleSignInAPI());

// Facebook
FirebaseAuthProvider.signInWith(FacebookSignInAPI());

...

So if your priority is 'simplicity' and 'less code' for 3rd party integration, it is worth using this package.

Who should consider NOT using this

Firstly, if your project only uses firebase provided sign-in methods, such as email or phone auth, it is better using firebase_auth package directly.

Secondly, as this package includes several 3rd party sign-ins, such as google, facebook and kakao, it contains related packages which you might not need it. For example, even though you only provide email and google sign-in methods to the customer, your project will still contain facebook or other sign-in packages which is not necessary in your case. If the issue matters to you, I recommend using your own way instead of implementing this package

Currently supporting Sign-ins

  • [X] Email
  • [X] Phone
  • [X] Google
  • [ ] Google Play Games
  • [X] Facebook
  • [X] Kakao
  • [X] Apple
  • [ ] GameCenter
  • [ ] Twitter
  • [ ] Github
  • [ ] Line

Support

If the package was useful or saved your time, please do not hesitate to buy me a cup of coffee! ;)
The more caffeine I get, the more useful projects I can make in the future.

Buy Me A Coffee

Getting Started

NOTE: Only setup what you need. No need to configure all of followings

IF you encounter app crashes, you must configure Facebook setting.

Caused by com.facebook.FacebookSdkNotInitializedException
The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.

The crash is happening because facebook auth package checkes the app id even if you do not use it and throws an exception when it is not set properly.

Firebase Auth Setup

This project uses firebase_auth package and is just a wrapper of it. So please make sure you follow setup instruction of firebase_auth.

You basically need to set google services at Android build.gradle files, and then you must add App at Firebase Console.

NOTE: If previous setting is not completed you will get an error like below.

java.lang.IllegalStateException:
Default FirebaseApp is not initialized in this process [package name].
Make sure to call FirebaseApp.initializeApp(Context) first.
Google sign in Setup

Import google_sign_in package and follow the instruction.

Facebook sign in Setup

Import flutter_facebook_login package and follow the instruction.

Note: Use openssl-0.9.8e_X64 for getting key hash. Otherwise, it will fail to authenticate.
Also, on Windows platform, DO NOT use keytool at powershall using vs code's terminal. Use cmd.

Apple sign in Setup

Import sign_in_with_apple package and follow the instruction there or follow the instruction on this package for setting stuffs on apple developer site only.

Kakao sign in Setup

Import kakao_flutter_sdk package and follow the instruction. Steps are similar to Facebook settings.

  1. Create an app at kakao developer portal.
  2. Set key hash in there.

Note: Use openssl-0.9.8e_X64 for getting key hash. Otherwise, it will fail to authenticate.
Also, on Windows platform, DO NOT use keytool at powershall using vs code's terminal. Use cmd.

For Android, Set AndroidManfest.xml

For iOS, Set info.plist and import SDK into xcode before building.

For Firebase, We need a cloud function which creates custom token with kakao access token. Please refer to below documents.

  1. Issue ticket at FirebaseExtended github.
  2. Basic implementation at FirebaseExtended github.
  3. Improved implementation by CorderSpinoza at github.
  4. Usage of userClaims at Stackoverflow.
  5. npm install --save request request-promise to use 'request-promise module'
  6. IMPORTANT: Make sure to call 'createCustomToken' with { provider: "kakaocorp.com" } at 2nd parameter. If not, you won't be able to call sign-out for it.

Note: Either using config.json file or using config 'firebase functions:config:set kakao.appid=your_kakao_app_id' for cloud function is recommended instead of coding it directely into cloud function code.
Then, you can decalre like:

const kakaoId = require("./config.json");
const kakaoId = functions.config().kakao.appid;

If you encounter below error, follow the link and enable API.

{error: {codePrefix: auth, errorInfo: {code: auth/insufficient-permission, message: Identity and Access Management (IAM) API has not been used in project YOUR_PROJECT_ID before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/iam.googleapis.com/overview?project=YOUR_PROJECT_ID then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.; Please refer to https://firebase.google.com/docs/auth/admin/create-custom-tokens for more details on how to use and troubleshoot this feature.}}}

If you see below error, you also need to set Permission of iam.serviceAccounts.signBolb.

{error: {codePrefix: auth, errorInfo: {code: auth/insufficient-permission, message: Permission iam.serviceAccounts.signBlob is required to perform this operation on service account projects/-/serviceAccounts/YOUR_PROJECT_NAME@appspot.gserviceaccount.com.; Please refer to https://firebase.google.com/docs/auth/admin/create-custom-tokens for more details on how to use and troubleshoot this feature.}}}

Grant permission in console.

Lastly, as this uses external request, you need to change your plan to 'Blaze'. Otherwise, you will get 500 error.

Usage

Simple Sign-up/in/out

Simply initialize the class you want to sign in for, and call signIn() function.
NOTE: If you use it this way, you need to manage 3rd party sign-'out' logic yourself, because 'firebase_auth' package does not support the function yet. It only provides signOut() function which signs out from the firebase, not from 3rd party providers. You also have to manage linking option yourself if needed.

Sign-Up / Sign-In
// e-mail
FirebaseEmailAuthAPI(email: inputEmail, password: inputPassword).signUp();
FirebaseEmailAuthAPI(email: inputEmail, password: inputPassword).signIn();

// phone auth
FirebasePhoneAuthAPI phoneAuthAPI = FirebasePhoneAuthAPI();
phoneAuthAPI.verifyNumber(phoneNumber, ....);
phoneAuthAPI.submitVerificationCode(code);
phoneAuthAPI.signIn();

// google
FirebaseGoogleAuthAPI().signIn();
FirebaseGoogleAuthAPI(scopes: ['email', 'https://www.googleapis.com/auth/contacts.readonly']).signIn();

// Kakao 
FirebaseKakaoAuthAPI().signIn();

// Facebook
FirebaseFacebookAuthAPI().signIn();
Sign-Out
// Signing out using original package of firebase_auth. 
// IMPORTANT: This will NOT sign out from 3rd party provider
FirebaseAuth.instance.signOut();
Using the wrapper (Recommended)

We provide FirebaseAuthProvider so that we can manage sign-out and 3rd party providers' account linking function for you.

Sign-Up / Sign-In
FirebaseAuthProvider.instance.signUpWith(FirebaseWhateverAuthAPI());    // Only works with firebase provided auth. (eg. email)
FirebaseAuthProvider.instance.signInWith(FirebaseWhateverAuthAPI()); 

Phone authenticate needs few more lines.

FirebasePhoneAuthAPI phoneAuthAPI = FirebasePhoneAuthAPI();
phoneAuthAPI.verifyNumber(phoneNumber, ....);
phoneAuthAPI.submitVerificationCode(code);

FirebaseAuthProvider.instance.signInWith(phoneAuthAPI);
Sign-Out
// Then you can sign-out anywhere. 
FirebaseAuthProvider.instance.signOut();

NOTE: Good thing to use this way is it does not only sign out from Firestore, but also sign out from 3rd party provider which we can allow user to sign-in with another account to the same provider. Also, you can manage account linking easily.

Linking
FirebaseAuthProvider.instance.linkCurrentUserWith(FirebaseWhateverAuthAPI());

Phone authenticate needs few more lines.

final FirebasePhoneAuthAPI phoneAuthAPI = FirebasePhoneAuthAPI(); // Initialize first
phoneAuthAPI.verifyNumber(phoneNumber, ......);          // Send phone number to get code
phoneAuthAPI.submitVerificationCode(code);                        // Submit the 6 digit code

FirebaseAuthProvider.instance.linkCurrentUserWith(phoneAuthAPI);  // Then try link (Will get ERROR_INVALID_VERIFICATION_CODE exception if code is wrong)
Unlinking
FirebaseAuthProvider.instance.unlinkCurrentUserFrom(FirebaseWhateverAuthAPI());
Other useful packages you might be instrested

Material design Speed Dial
Google Maps Place Picker

Buy Me A Coffee

카테고리

의존성

소스 저장소

이 패키지를 사용하는 프로젝트

아직 데이터가 없습니다.