auth:import และ auth:export

  • คำสั่ง auth:import จะนำเข้าบัญชีผู้ใช้ไปยังโปรเจ็กต์ Firebase

  • คำสั่ง auth:export จะส่งออกบัญชีผู้ใช้เป็นไฟล์ JSON และ CSV

พารามิเตอร์ของแฮชรหัสผ่าน

หากต้องการระบุพารามิเตอร์ของแฮชรหัสผ่านที่ใช้สำหรับโปรเจ็กต์ ให้ไปที่ส่วนการตรวจสอบสิทธิ์ > ผู้ใช้ของคอนโซล Firebase และคลิกไอคอน 3 จุดเหนือรายชื่อผู้ใช้ คุณจะเห็นกล่องโต้ตอบที่มีรายการพารามิเตอร์แฮชรหัสผ่านที่ใช้กับคำสั่ง auth:import และ auth:export ได้ ดังนี้

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

ค่าเหล่านี้มีความละเอียดอ่อน ดังนั้นโปรดจัดเก็บด้วยความระมัดระวัง โปรเจ็กต์ Firebase ส่วนใหญ่ใช้ 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 ที่มีบัญชีผู้ใช้ที่จะนำเข้า ดูรูปแบบไฟล์
แฮช Algo อัลกอริทึมที่ใช้เพื่อแฮชรหัสผ่านในไฟล์บัญชีผู้ใช้
จำเป็นต้องนำเข้าบัญชีที่มีช่องรหัสผ่าน ค่าใดค่าหนึ่งต่อไปนี้: BCRYPT, SCRYPT, STANDARD_SCRYPT, HMAC_SHA512, HMAC_SHA256, HMAC_SHA1, HMAC_MD5, MD5, SHA512, SHA256, SHA1, PBKDF_SHA1, PBKDF2_SHA256
คีย์แฮช คีย์ที่ใช้ในการแฮชรหัสผ่าน
ต้องระบุสำหรับอัลกอริทึม SCRYPT, HMAC_SHA512, HMAC_SHA256, HMAC_SHA1 และ HMAC_MD5 อาร์กิวเมนต์นี้ต้องจัดรูปแบบเป็นสตริงที่เข้ารหัสฐาน 64
เครื่องผสมเกลือ ตัวคั่นเกลือซึ่งจะเติมเกลือต่อท้ายเมื่อยืนยันรหัสผ่าน
ไม่บังคับสำหรับอัลกอริทึมทั้งหมด อาร์กิวเมนต์นี้ต้องจัดรูปแบบเป็นสตริงที่เข้ารหัสฐาน 64
rounds จำนวนรอบที่ใช้ในการแฮชรหัสผ่าน
จำเป็นสำหรับอัลกอริทึม SCRYPT, MD5, SHA512, SHA256, SHA1, PBKDF_SHA1 และ PBKDF2_SHA256
mem-cost พารามิเตอร์นี้แสดงค่าใช้จ่ายหน่วยความจำที่จำเป็นสำหรับอัลกอริทึม SCRYPT หรือค่าใช้จ่าย CPU/หน่วยความจำที่จำเป็นสำหรับอัลกอริทึม STANDARD_SCRYPT
การโหลดพร้อมกัน อัลกอริทึมการแฮชที่ทำงานพร้อมกัน
ต้องระบุสำหรับอัลกอริทึม STANDARD_SCRYPT
block-size ขนาดบล็อก (โดยทั่วไปคือ 8) ของอัลกอริทึมการแฮช
ต้องระบุสำหรับอัลกอริทึม STANDARD_SCRYPT
dk-len ความยาวคีย์ที่ได้จากอัลกอริทึมการแฮช
ต้องระบุสำหรับอัลกอริทึม STANDARD_SCRYPT
ลำดับอินพุตแฮช ลำดับของรหัสผ่านและ Salt
ค่าที่เป็นไปได้คือ 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 สตริง ต้องระบุ
รหัสนี้ไม่ควรซ้ำกันในทุกบัญชีในโปรเจ็กต์ Firebase หากนำเข้าบัญชีที่มี UID อยู่แล้ว ระบบจะเขียนทับบัญชี
2 อีเมล สตริง ไม่บังคับ
3 อีเมลได้รับการยืนยันแล้ว บูลีน ไม่บังคับ
4 แฮชรหัสผ่าน สตริง ไม่บังคับ
สตริงที่เข้ารหัส base64 ผู้โทรต้องมีบทบาทผู้แก้ไขหรือเจ้าของในช่องนี้
5 Salt รหัสผ่าน สตริง ไม่บังคับ
สตริงที่เข้ารหัส base64 ผู้โทรต้องมีบทบาทผู้แก้ไขหรือเจ้าของในช่องนี้
6 ชื่อ สตริง ไม่บังคับ
7 URL รูปภาพ สตริง ไม่บังคับ
8 รหัส Google สตริง ไม่บังคับ
9 อีเมล Google สตริง ไม่บังคับ
10 ชื่อที่แสดงของ Google สตริง ไม่บังคับ
11 URL ของ Google Photos สตริง ไม่บังคับ
12 รหัส Facebook สตริง ไม่บังคับ
13 อีเมล Facebook สตริง ไม่บังคับ
14 ชื่อที่แสดงของ Facebook สตริง ไม่บังคับ
15 URL รูปภาพ Facebook สตริง ไม่บังคับ
16 รหัส Twitter สตริง ไม่บังคับ
17 อีเมล Twitter สตริง ไม่บังคับ
18 ชื่อที่แสดงใน Twitter สตริง ไม่บังคับ
19 URL รูปภาพของ Twitter สตริง ไม่บังคับ
20 รหัส GitHub สตริง ไม่บังคับ
21 อีเมล GitHub สตริง ไม่บังคับ
22 ชื่อที่แสดงของ GitHub สตริง ไม่บังคับ
23 URL ของรูปภาพ GitHub สตริง ไม่บังคับ
24 เวลาที่สร้างผู้ใช้ ยาว ไม่บังคับ
การประทับเวลา Unix Epoch Unix ในหน่วยมิลลิวินาที
25 เวลาที่ลงชื่อเข้าใช้ล่าสุด ยาว ไม่บังคับ
การประทับเวลา Unix Epoch 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