auth:import và auth:export

  • Lệnh auth:import sẽ nhập tài khoản người dùng vào các dự án Firebase.

  • Lệnh auth:export xuất tài khoản người dùng sang các tệp JSON và CSV.

Tham số băm mật khẩu

Để xác định tham số băm mật khẩu dùng cho dự án của bạn, hãy chuyển đến mục Xác thực > Người dùng trong bảng điều khiển của Firebase rồi nhấp vào biểu tượng ba dấu chấm phía trên danh sách người dùng. Bạn sẽ thấy một hộp thoại có danh sách các tham số băm mật khẩu mà bạn có thể sử dụng với lệnh auth:importauth:export:

hash_config {
  algorithm: SCRYPT,
  base64_signer_key: <...sensitive...>,
  base64_salt_separator: <...sensitive...>,
  rounds: 8,
  mem_cost: 14,
}

Các giá trị này rất nhạy cảm, vì vậy hãy lưu trữ chúng một cách cẩn thận. Hầu hết các dự án Firebase đều sử dụng SCRYPT, một phiên bản sửa đổi của thuật toán băm mã hoá. Đây là phiên bản mặc định cho các dự án mới.

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
Tham số
account_file Tệp CSV hoặc JSON chứa tài khoản người dùng cần nhập. Hãy xem phần Định dạng tệp.
thuật toán băm Thuật toán dùng để băm mật khẩu trong tệp tài khoản người dùng.
Bắt buộc phải nhập tài khoản có trường mật khẩu. Một trong các giá trị sau: BCRYPT, SCRYPT, STANDARD_SCRYPT, HMAC_SHA512, HMAC_SHA256, HMAC_SHA1, HMAC_MD5, MD5, SHA512, SHA256, SHA1, PBKDF_SHA1, PBKDF2_SHA256.
khoá băm Khoá dùng để băm mật khẩu.
Bắt buộc đối với thuật toán SCRYPT, HMAC_SHA512, HMAC_SHA256, HMAC_SHA1HMAC_MD5. Đối số này phải được định dạng dưới dạng một chuỗi được mã hoá base64.
bộ phân tách dữ liệu ngẫu nhiên Dấu phân cách dữ liệu ngẫu nhiên sẽ được thêm vào dữ liệu ngẫu nhiên khi xác minh mật khẩu.
Không bắt buộc đối với tất cả thuật toán. Đối số này phải được định dạng dưới dạng một chuỗi được mã hoá base64.
rounds Số vòng dùng để băm mật khẩu.
Bắt buộc đối với thuật toán SCRYPT, MD5, SHA512, SHA256, SHA1, PBKDF_SHA1PBKDF2_SHA256.
mem-cost Tham số này thể hiện chi phí bộ nhớ cần thiết cho thuật toán SCRYPT HOẶC chi phí CPU/bộ nhớ cần thiết cho thuật toán STANDARD_SCRYPT.
tải song song Việc tải song song thuật toán băm.
Bắt buộc đối với thuật toán STANDARD_SCRYPT.
block-size Kích thước khối (bình thường là 8) của thuật toán băm.
Bắt buộc đối với thuật toán STANDARD_SCRYPT.
dk-len Độ dài khoá phái sinh của thuật toán băm.
Bắt buộc đối với thuật toán STANDARD_SCRYPT.
thứ tự đầu vào băm Thứ tự của mật khẩu và dữ liệu ngẫu nhiên.
Các giá trị có thể là SALT_FIRSTPASSWORD_FIRST. Cờ này áp dụng cho SHA512, SHA256, SHA1, MD5, HMAC_SHA512, HMAC_SHA256, HMAC_SHA1HMAC_MD5.

auth:xuất

firebase auth:export ACCOUNT_FILE --format=FILE_FORMAT
Tham số
account_file Tệp CSV hoặc JSON để xuất. Hãy xem phần Định dạng tệp.
file_format Không bắt buộc. Định dạng tệp để xuất: CSV hoặc JSON.
Nếu tên tệp được chỉ định trong tham số account_file kết thúc bằng .csv hoặc .json, thì định dạng đó sẽ được dùng và tham số này sẽ bị bỏ qua.

Định dạng tệp

Tệp tài khoản người dùng có thể được định dạng là CSV hoặc JSON.

CSV

Tệp tài khoản người dùng CSV có định dạng sau:

Số cột Mô tả trường Loại trường Bình luận
1 UID Chuỗi Bắt buộc
Mã này phải là duy nhất trong số tất cả các tài khoản trong dự án Firebase của bạn. Nếu bạn nhập một tài khoản có UID đã tồn tại thì tài khoản đó sẽ bị ghi đè.
2 Email Chuỗi Không bắt buộc
3 Đã xác minh email Boolean Không bắt buộc
4 Hàm băm mật khẩu Chuỗi Không bắt buộc
Một chuỗi được mã hoá bằng base64. Trường này yêu cầu phương thức gọi có vai trò Người chỉnh sửa hoặc Chủ sở hữu.
5 Thêm dữ liệu ngẫu nhiên vào mật khẩu Chuỗi Không bắt buộc
Một chuỗi được mã hoá bằng base64. Trường này yêu cầu phương thức gọi có vai trò Người chỉnh sửa hoặc Chủ sở hữu.
6 Tên Chuỗi Không bắt buộc
7 URL ảnh Chuỗi Không bắt buộc
8 Mã nhận dạng Google Chuỗi Không bắt buộc
9 Email của Google Chuỗi Không bắt buộc
10 Tên hiển thị của Google Chuỗi Không bắt buộc
11 URL Google Photos Chuỗi Không bắt buộc
12 ID Facebook Chuỗi Không bắt buộc
13 Email Facebook Chuỗi Không bắt buộc
14 Tên hiển thị của Facebook Chuỗi Không bắt buộc
15 URL ảnh trên Facebook Chuỗi Không bắt buộc
16 Mã nhận dạng Twitter Chuỗi Không bắt buộc
17 Email trên Twitter Chuỗi Không bắt buộc
18 Tên hiển thị trên Twitter Chuỗi Không bắt buộc
19 URL ảnh trên Twitter Chuỗi Không bắt buộc
20 Mã GitHub Chuỗi Không bắt buộc
21 Email GitHub Chuỗi Không bắt buộc
22 Tên hiển thị trên GitHub Chuỗi Không bắt buộc
23 URL ảnh trên GitHub Chuỗi Không bắt buộc
24 Thời gian tạo của người dùng Dài Dấu thời gian không bắt buộc
Epoch Unix tính bằng mili giây.
25 Lần đăng nhập gần đây nhất Dài Dấu thời gian không bắt buộc
Epoch Unix tính bằng mili giây.
26 Số điện thoại Chuỗi Không bắt buộc

Nếu bạn không chỉ định một giá trị không bắt buộc, hãy đảm bảo bạn vẫn thêm một trường trống cho giá trị đó. Trường trống có thể là số lượng ký tự dấu cách bất kỳ.

Ví dụ: dòng sau đây đại diện cho một tài khoản người dùng:

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

Tệp tài khoản người dùng JSON có định dạng sau:

{
  "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
        },
        ...
      ]
    },
    ...
  ]
}

Thay thế PROVIDER_ID bằng một trong các giá trị sau:

  • google.com
  • facebook.com
  • github.com
  • twitter.com