- auth:import명령어는 사용자 계정을 Firebase 프로젝트로 가져옵니다.
- auth:export명령어는 사용자 계정을 JSON 및 CSV 파일로 내보냅니다.
비밀번호 해시 매개변수
프로젝트에 사용되는 비밀번호 해시 파라미터를 확인하려면 Firebase Console의 인증 > 사용자 섹션으로 이동하고 사용자 목록 위의 점 3개 아이콘을 클릭합니다. auth:import 및 auth:export 명령어와 함께 사용할 수 있는 비밀번호 해시 파라미터 목록이 있는 대화상자가 표시됩니다.
hash_config {
  algorithm: SCRYPT,
  base64_signer_key: <...sensitive...>,
  base64_salt_separator: <...sensitive...>,
  rounds: 8,
  mem_cost: 14,
}
이러한 값은 민감한 정보이므로 저장 시 주의하세요. 대부분의 Firebase 프로젝트에서는 scrypt 해싱 알고리즘의 수정된 버전인 SCRYPT를 사용하며 새 프로젝트에 기본값으로 설정됩니다.
auth:import
firebase auth:import ACCOUNT_FILE    \
    --hash-algo=HASH_ALGORITHM         \
    --hash-key=KEY                     \
    --salt-separator=SALT_SEPARATOR    \
    --rounds=ROUNDS                    \
    --mem-cost=MEM_COST                \
    --parallelization=PARALLELIZATION  \
    --block-size=BLOCK_SIZE            \
    --dk-len=DK_LEN                    \
    --hash-input-order=HASH_INPUT_ORDER
| 매개변수 | |
|---|---|
| account_file | 가져올 사용자 계정을 포함하는 CSV 또는 JSON 파일입니다. 파일 형식을 참조하세요. | 
| hash-algo | 사용자 계정 파일에서 비밀번호를 해시하는 데 사용되는 알고리즘입니다. 비밀번호 필드가 있는 계정을 가져올 때 필요합니다. BCRYPT,SCRYPT,STANDARD_SCRYPT,HMAC_SHA512,HMAC_SHA256,HMAC_SHA1,HMAC_MD5,MD5,SHA512,SHA256,SHA1,PBKDF_SHA1,PBKDF2_SHA256값 중 하나입니다. | 
| hash-key | 비밀번호를 해시하는 데 사용되는 키입니다. SCRYPT,HMAC_SHA512,HMAC_SHA256,HMAC_SHA1,HMAC_MD5알고리즘에 필요합니다.
     이 인수는 base64 인코딩 문자열 형식이어야 합니다. | 
| salt-separator | 비밀번호를 확인할 때 솔트에 추가되는 솔트 구분자입니다. 모든 알고리즘에서 선택사항입니다. 이 인수는 base64 인코딩 문자열 형식이어야 합니다. | 
| rounds | 비밀번호를 해시하는 데 사용되는 라운드 수입니다. SCRYPT,MD5,SHA512,SHA256,SHA1,PBKDF_SHA1,PBKDF2_SHA256알고리즘에 필요합니다. | 
| mem-cost | 이 매개변수는 SCRYPT알고리즘에 필요한 메모리 비용 또는STANDARD_SCRYPT알고리즘에 필요한 CPU/메모리 비용을 나타냅니다. | 
| parallelization | 해싱 알고리즘의 동시 로드입니다. STANDARD_SCRYPT알고리즘에 필요합니다. | 
| block-size | 해싱 알고리즘의 블록 크기(일반적으로 8)입니다. STANDARD_SCRYPT알고리즘에 필요합니다. | 
| dk-len | 해싱 알고리즘의 파생 키 길이입니다. STANDARD_SCRYPT알고리즘에 필요합니다. | 
| hash-input-order | 비밀번호와 솔트의 순서입니다. 가능한 값은 SALT_FIRST및PASSWORD_FIRST입니다. 이 플래그는SHA512,SHA256,SHA1,MD5,HMAC_SHA512,HMAC_SHA256,HMAC_SHA1,HMAC_MD5에 적용됩니다. | 
auth:export
firebase auth:export ACCOUNT_FILE --format=FILE_FORMAT
| 매개변수 | |
|---|---|
| account_file | 내보낼 대상 CSV 또는 JSON 파일입니다. 파일 형식을 참조하세요. | 
| file_format | 선택사항. 내보낼 파일 형식으로 CSV 또는 JSON입니다. account_file매개변수에 지정된 파일 이름이.csv또는.json으로 끝나면 이 형식이 사용되고 이 매개변수는 무시됩니다. | 
파일 형식
사용자 계정 파일은 CSV 또는 JSON 형식일 수 있습니다.
CSV
CSV 사용자 계정 파일의 형식은 다음과 같습니다.
| 열 번호 | 필드 설명 | 필드 유형 | 설명 | 
|---|---|---|---|
| 1 | UID | 문자열 | 필수 이 ID는 Firebase 프로젝트의 모든 계정에서 고유해야 합니다. 가져온 계정의 UID가 이미 있으면 계정을 덮어쓰게 됩니다. | 
| 2 | 이메일 | 문자열 | 선택사항 | 
| 3 | 이메일 인증 여부 | 부울 | 선택사항 | 
| 4 | 비밀번호 해시 | 문자열 | 선택사항 base64 인코딩 문자열입니다. 이 필드에서 호출자는 편집자 또는 소유자 역할을 가지고 있어야 합니다. | 
| 5 | 비밀번호 솔트 | 문자열 | 선택사항 base64 인코딩 문자열입니다. 이 필드에서 호출자는 편집자 또는 소유자 역할을 가지고 있어야 합니다. | 
| 6 | 이름 | 문자열 | 선택사항 | 
| 7 | 사진 URL | 문자열 | 선택사항 | 
| 8 | Google ID | 문자열 | 선택사항 | 
| 9 | Google 이메일 | 문자열 | 선택사항 | 
| 10 | Google 표시 이름 | 문자열 | 선택사항 | 
| 11 | Google 사진 URL | 문자열 | 선택사항 | 
| 12 | Facebook ID | 문자열 | 선택사항 | 
| 13 | Facebook 이메일 | 문자열 | 선택사항 | 
| 14 | Facebook 표시 이름 | 문자열 | 선택사항 | 
| 15 | Facebook 사진 URL | 문자열 | 선택사항 | 
| 16 | Twitter ID | 문자열 | 선택사항 | 
| 17 | Twitter 이메일 | 문자열 | 선택사항 | 
| 18 | Twitter 표시 이름 | 문자열 | 선택사항 | 
| 19 | Twitter 사진 URL | 문자열 | 선택사항 | 
| 20 | GitHub ID | 문자열 | 선택사항 | 
| 21 | GitHub 이메일 | 문자열 | 선택사항 | 
| 22 | GitHub 표시 이름 | 문자열 | 선택사항 | 
| 23 | GitHub 사진 URL | 문자열 | 선택사항 | 
| 24 | 사용자 생성 시간 | Long | 선택사항 에포크 Unix 타임스탬프(밀리초)입니다. | 
| 25 | 마지막 로그인 시간 | Long | 선택사항 에포크 Unix 타임스탬프(밀리초)입니다. | 
| 26 | 전화번호 | 문자열 | 선택사항 | 
선택사항에 값을 지정하지 않더라도 빈 필드를 값으로 계속 포함해야 합니다. 공백 문자의 수에 관계없이 빈 필드로 인식됩니다.
예를 들어 다음 줄은 사용자 계정을 나타냅니다.
111, test@test.org, false, Jlf7onfLbzqPNFP/1pqhx6fQF/w=, c2FsdC0x, Test User, http://photo.com/123, , , , , 123, test@test.org, Test FB User, http://photo.com/456, , , , , , , , , 1486324027000, 1486324027000
JSON
JSON 사용자 계정 파일의 형식은 다음과 같습니다.
{
  "users": [
    {
      "localId": UID,
      "email": EMAIL_ADDRESS
      "emailVerified": EMAIL_VERIFIED,
      "passwordHash": BASE64_ENCODED_PASSWORD_HASH,
      "salt": BASE64_ENCODED_PASSWORD_SALT,
      "displayName": NAME,
      "photoUrl": PHOTO_URL,
      "createdAt": CREATED_AT_IN_MILLIS,
      "lastSignedInAt": LAST_SIGNEDIN_AT_IN_MILLIS,
      "phoneNumber": PHONE_NUMBER
      "providerUserInfo": [
        {
          "providerId": PROVIDER_ID,
          "rawId": PROVIDER_UID,
          "email":  PROVIDER_EMAIL,
          "displayName": PROVIDER_NAME,
          "photoUrl": PROVIDER_PHOTO_URL
        },
        ...
      ]
    },
    ...
  ]
}PROVIDER_ID를 다음 값 중 하나로 바꿉니다.
- google.com
- facebook.com
- github.com
- twitter.com