Firebase Admin SDK에서 제공하는 API를 활용하면 더 많은 권한으로 Firebase 인증 사용자를 관리할 수 있습니다. 관리자 사용자 관리 API를 사용하면 안전한 서버 환경에서 프로그래머틱 방식으로 다음과 같은 작업을 완료할 수 있습니다.
- 제한 또는 비율 제한 없이 새 사용자 생성
- uid, 이메일, 전화번호 등 여러 기준으로 사용자 조회
- 지정된 프로젝트에 속한 모든 사용자를 배치별로 나열
- 계정 생성 날짜 및 마지막으로 로그인한 날짜 등 사용자 메타데이터 액세스
- 기존 시용자 비밀번호를 입력하지 않고 사용자 삭제
- 사용자로 로그인하지 않고 비밀번호 등 사용자 속성 업데이트
- 비밀번호를 확인하기 위한 대역 외 작업 흐름을 거치지 않고 이메일 확인
- 변경사항을 취소하기 위한 이메일 링크를 보내지 않고 사용자 이메일 변경
- SMS 확인 흐름을 거치지 않고 전화번호로 새 사용자 생성
- SMS 확인 흐름을 거치지 않고 사용자의 전화번호 변경
- 중지 상태에서 오프라인으로 사용자 프로비저닝한 후 사용자를 설정할 시기를 나중에 제어
- 특정 애플리케이션의 사용자 관리 시스템에 맞는 커스텀 사용자 콘솔 빌드
getAuth().getUser(uid).then(userRecord => {
console.log(`Successfully fetched user data: ${userRecord.toJSON()}`);
}).catch(error => {
console.log(`Error fetching user data: ${error}`);
});
- 제공된
uid
가 기존 사용자에게 속하지 않거나 기타 이유로 사용자를 가져올 수 없는 경우 위 메서드에서 오류가 발생.- 사용자의 uid 대신 사용자의 이메일이 있을 수도 있다.
Firebase Admin SDK
는 이메일로 사용자 정보를 조회하는 기능을 지원
getAuth().getUserByEmail(email).then(userRecord => {
console.log(`Successfully fetched user data: ${userRecord.toJSON()}`)'
}).catch(error => {
console.log(`Error fetching user data: ${error}`);
})
- 이메일 조회에서는 기본(최상위 수준) 이메일만 검색할 수 있고 제공업체별 이메일을 검색할 수 없습니다.
getAuth().getUserByPhoneNumber(phonenumber).then(userRecord => {
console.log(`Successfully fetched user data: ${userRecord.toJSON()}`);
}).catch(error => {
console.log(`Error fetching user data: ${error}`);
})
(호출 1번당 최대 100개)
getAuth().getUsers([{ uid: 'uid1' }, { email: 'user2@example.com' }, { phoneNumber: '+155555020' }, { providerId: 'google.com', providerUid: 'google_uid4' }])
.then((getUsersResult) => {
console.log(`Successfully fetched user data: `);
getUsersResult.users.forEach((userRecord) => {
console.log(userRecord);
})
console.log(`Unable to find users corresponding to these identifiers:`);
getUsersResult.notFound.forEach((userIdentifier) => {
console.log(userIdentifier);
})
}).catch((error) => {
console.log(`Error fetching user data: `, error);
})
createUser 지원속성
@param {Object}
@param {string} Object.uid
@param {string} Object.email
@param {boolean} Object.emailVerified
@param {string} Object.phoneNumber
@param {string} Object.displayName
@param {string} Object.photoURL
@param {boolean} Object.disabled
getAuth().createUser({ email: 'user@example.com', emailVerified: false, phoneNumber: '+112324121', password: 'secretPassword', displayName: 'John Doe', photoURL: 'http://www.example.com/12345678/photo.png', disabled: false }).then(userRecord => {
console.log('Successfully created new user:', userRecord.uid);
}).catch(error => {
console.log('Error creating new user:', error);
})
(업데이트할 사용자 속성과 함께 해당 사용자의 uid를 지정)
updateUser 지원속성
@param {Object}
@param {string} Object.email
@param {boolean} Object.emailVerified
@param {string} Object.phoneNumber
@param {string} Object.password
@param {string || null} Object.displayName
@param {string || null} Object.photoURL
@param {boolean} Object.disabled
getAuth().updateUser(uid, { email: '', phoneNumber: '', emailVerified: true, password: '', displayName: '', photoURL: '', disabled: true }).then(userRecord => {
console.log('Successfully updated user', userRecord.toJSON());
}).catch(error => {
console.log('Error updating user:', error);
})
getAuth().deleteUser(uid).then(() => {
console.log(`Successfully deleted user`);
}).catch(error => {
console.log('Error deleting user:', error);
})
getAuth().deleteUsers([uid1, uid2, uid3]).then(deleteUsersResult => {
console.log(`Successfully deleted ${deleteUsersResult.successCount} users`);
console.log(`Failed to delete ${deleteUsers.failureCount} users`);
deleteUsersResult.errors.forEach(err => {
console.log(err.error.toJSON());
})
}).catch(error => {
console.log('Error deleteing users:', error);
})
maxResults
필드를 지정하지 않으면 기본적으로 배치당 사용자 1,000명 포함
pageToken
를 지정하지 않으면 맨 처음 사용자부터 uid순으로 나열
const listAllUsers = (nextPageToken) => {
getAuth().listUsers(1000, nextPageToken).then(listUsersList => {
listUsersResult.users.forEach(userRecord => {
console.log('user', userRecord.toJSON());
});
if(listUsersReulst.pageToken) listAllUsers(listUsersResult.pageToken);
}).catch(error => {
console.log('Error listing users:', error);
})
}
listAllUsers();