Firebase를 이용하면 가입된 사용자 인증도 받을 수 있다.
파이어베이스에 임시계정 추가하기
파이어베이스 프로젝트의 Authenification 에 들어가서 임시로 사용할 사용자를 추가한다.
(ID, 비밀번호 임의로 정해주면 된다)

Firebase 인증 시작하기
react native에서 firebase를 사용하기 위해서는 firebase를 설치하고, firebase 앱 객체를 만들어야 한다
1. firebase를 설치하기
npm install firebase
2. 앱에서 Firebase를 초기화하고 Firebase 앱 객체를 만든다.
import { initializeApp } from 'firebase/app';
import config from "../firebase.json";
const app = initializeApp(config);
config는 내가 만든 파이어베이스 프로젝트의 configuration이다.
내 프로젝트에 들어가서 찾을 수 있다.

React native으로 만든 App 파일들의 최상위에 firebase.json파일을 만들어 config내용을 저장해두고, import해서 사용했다.
signInWithEmailAndPassword()
firebase 문서에서 웹 시작하기의 API참조 - auth - 개요 문서로 가면 인증에 사용할 수 있는 함수를 확인할 수 있다.
( 인증 패키지 : https://firebase.google.com/docs/reference/js/auth?authuser=0#functions )
firebase인증에서 로그인 시 이메일과 비밀번호를 같이 사용하는 함수는 signInWithEmaiAndPassword(); 밖에 없다.
사용자 로그인을 위해 signInWithEmailAndPassword()를 사용한다.
( signInWithEmailAndPassword() : https://firebase.google.com/docs/reference/js/auth?authuser=0#signinwithemailandpassword )
export declare function signInWithEmailAndPassword(auth: Auth, email: string, password: string): Promise<UserCredential>;

매개변수로 auth, email, password를 받고, <UserCredential>를 반환한다.
App 내에서는 아래와 같이 사용한다.
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
 | 
 // import { initializeApp } from 'firebase/app'; 
// import config from "../firebase.json"; 
import { getAuth, signInWithEmailAndPassword } from "firebase/auth"; 
// const app = initializeApp(config); 
const auth = getAuth(app); 
export const signin = async ({ email, password }) => { 
  const { user } = await signInWithEmailAndPassword(auth, email, password); 
  return user; 
}; 
 | 
cs | 
아까 설정한 firebase 앱 객체를 사용한다.
getAuth와 signInWithEmailAndPassword를 사용한다. 등록되어 있는 email과 password를 입력하면, user 객체를 반환한다. 내가 작성한 코드는 async/await을 사용했는데 firebase 문서에는 .then()/.catch()를 사용한다. 아래 사이트 참고.
( 기존 사용자 로그인 : https://firebase.google.com/docs/auth/web/start?authuser=0#sign_in_existing_users )
signInWithEmailAndPassword에서 반환되는 userCredential은 다양한 정보를 가지고 있다. 그 중 user만 사용하기 위해 { user } 로 user정보만 받아오고, 반환한다.

( 분해할당 참고 : https://joylee-developer.tistory.com/173 )

로그인 기능을 가진 screen에서 signin함수를 import해서 사용한다.
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
 | 
 // Signin.js 
// 로그인 기능을 가진 Screen 
import { signin } from "../firebase"; 
const _handleSigninBtnPress = async () => { 
  try { 
    const user = await signin({ email, password }); 
    navigation.navigate("Profile", { user }); 
  } catch (e) { 
    console.log(e); 
  } 
}; 
 | 
cs | 
input에서 입력받은 email과 password를 넘겨서 인증을 확인한다.
성공적으로 인증하고 나면 Profile 화면으로 이동하며 user를 넘겨준다.
user 내의 사용자 정보나 프로필 사진 정보를 사용해 메신저 어플에 사용한다.
참고한 사이트
https://firebase.google.com/docs/reference/js/auth?authuser=0#signinwithemailandpassword
인증 패키지 | Firebase
firebase.ml.naturallanguage.translate
firebase.google.com
https://firebase.google.com/docs/auth/web/start?authuser=0#sign_in_existing_users
웹사이트에서 Firebase 인증 시작하기 | Firebase Documentation
의견 보내기 웹사이트에서 Firebase 인증 시작하기 Firebase 인증을 사용하면 사용자가 이메일 주소 및 비밀번호 로그인, 제휴 ID 공급업체(예: Google 로그인, Facebook 로그인)를 통한 로그인 방법 중 한
firebase.google.com
'React Native' 카테고리의 다른 글
| [RN, Firebase] 회원 가입, 이름, 프로필사진 저장 (0) | 2022.01.21 | 
|---|---|
| [react native] 로그인 할 때 이메일 유효성 검사 (0) | 2022.01.18 | 
| [RN, Firebase] Firebase시작하기, Storage 사용하기 (0) | 2022.01.14 | 
| [React Native] Context를 이용해 Component의 style 설정하기 (useContext) (0) | 2022.01.12 | 
| [React Native] Context API (0) | 2022.01.10 |