2017-10-05 48 views
1

我一直在努力將現有應用遷移到Firebase身份驗證中,並且我需要將用戶密碼導入Firebase以避免每個人都必須通過密碼重置。我設置了一個測試用戶並將其導入,但在導入之後,我發現Firebase拒絕了用戶的密碼。將現有用戶遷移到Firebase身份驗證

我提交這個JSON文件:

{"users": [{"localId": "5e722b92dd784e7fa37b98f94790a87e", "email": "[email protected]", "emailVerified": true, "passwordHash": "6ZoYxCjLONXyYIU2eJIuAw==", "displayName": "Test"}]} 

我已經嘗試添加「鹽」:「」上面,但它沒有任何效果。

我用這個命令執行:

firebase auth:import firebaseUsers.json --hash-algo=MD5 --rounds 0 --project projectname 

它成功地運行,並且不添加用戶。但是,當我嘗試使用它們登錄時,用戶只會收到「提供的密碼不正確或用戶沒有設置密碼」。

值「rounds」是我從網上的例子。我也嘗試了1,4和64,沒有成功。

此測試帳戶的密碼爲abc123。我已經證實,ABC123的BASE64 MD5是6ZoYxCjLONXyYIU2eJIuAw ==本的Python:

import hashlib 
import codecs 
import base64 
m = hashlib.md5() 
m.update("abc123".encode('utf-8')) 
print (base64.b64encode(codecs.decode(m.hexdigest(), 'hex')).decode()) 

這的確不輸出6ZoYxCjLONXyYIU2eJIuAw ==

任何人能怎麼樣了經歷了這個過程之前,看到我做了什麼這裏錯了嗎?

回答

0

問題中的代碼問題是它已將MD5的十六進制數字轉換爲base64。你實際需要做的是將十六進制數字的字符串轉換爲base64。因此以上述爲例

abc123的MD5是'e99a18c428cb38d5f260853678922e03'。 你需要將其轉換爲Base64的字符串,它等於「ZTk5YTE4YzQyOGNiMzhkNWYyNjA4NTM2Nzg5MjJlMDM =」

這裏是代碼的問題修正版本:

m = hashlib.md5() 
m.update("abc123".encode('utf-8')) 
hexmd5 = codecs.decode(m.hexdigest(), 'hex') 
print(base64.b64encode(bytes(m.hexdigest(), 'utf-8')).decode())