Firebase User의 Email 변경하기
개요
이하의 환경으로 구축되어진 FIrebase App에 있는 user의 인증정보중 하나인 email을 변경해보자
firebase의 authentication 탭에 들어가보면 어플리케이션을 이용할 수 있는 사용자들의 계정이 등록되어 있다.
여기에 식별자(ID)로써 등록되어있는 email을 변경해보자
Firebase App안에서 변경하기
위의 환경스샷에서 Front(firebase-app)안에서 변경하기 위해서는 reauthenticateWithCredential를 이용한 재인증이 선행되어야 한다. (비밀번호 변경, 이메일 변경, 계정 삭제등 보안에 민감한 행위들에 한해서)
Usage
const user = firebase.auth().currentUser;
const credential = firebase.auth.EmailAuthProvider.credential(
s.email,
s.password
);
user
.reauthenticateWithCredential(credential)
.then(() => {
user
.updateEmail(s.updateEmail)
.then()
.catch((error) => {
throw error;
});
})
.catch((error) => {
// An error ocurred
throw error;
});
https://firebase.google.com/docs/auth/web/manage-users?hl=ja%EF%BB%BF#re-authenticate_a_user
Firebase에서 사용자 관리하기 | Firebase Documentation
의견 보내기 Firebase에서 사용자 관리하기 사용자 생성하기 Firebase 프로젝트에서 신규 사용자를 생성할 때는 createUserWithEmailAndPassword 메서드를 호출하는 방법과 Google 로그인 또는 Facebook 로그인과
firebase.google.com
하지만, 나는 지금의 환경에서 firebase뿐만 아니라 GCP안의 DB(postgres)도 같이 변경해야 하기 때문에 Cloud Functions(API Server)를 이용해 동시에 변경을 해야한다.(같은 트랜잭션 안에서)
Firebase Admin SDK를 이용해 User의 Email변경
admin sdk의 경우에는 환경변수로써 이미 비밀키로 셋팅되어져 있기때문에 재인증을 할 필요가 없다.
$env:GOOGLE_APPLICATION_CREDENTIALS="secreKey.json"
const admin = require('firebase-admin');
const app = admin.initializeApp({
credential: admin.credential.applicationDefault()
});
https://firebase.google.com/docs/admin/setup#windows
서버에 Firebase Admin SDK 추가 | Firebase Documentation
의견 보내기 서버에 Firebase Admin SDK 추가 Admin SDK는 권한이 있는 환경에서 Firebase와 상호작용하여 다음과 같은 작업을 수행할 수 있는 서버 라이브러리 집합입니다. 전체 관리자 권한으로 실시간
firebase.google.com
Usage
아주 간단하게 4줄코드로써 끝이 나버린다.
await admin.auth().updateUser(userId, { // userId는 auth의 uid
email: s.email,
emailVerified: true
});
https://firebase.google.com/docs/auth/admin/manage-users
사용자 관리 | Firebase Documentation
의견 보내기 사용자 관리 Firebase Admin SDK에서 제공하는 API를 활용하면 더 많은 권한으로 Firebase 인증 사용자를 관리할 수 있습니다. 관리자 사용자 관리 API를 사용하면 안전한 서버 환경에서 프로
firebase.google.com