我一直在努力将现有应用迁移到Firebase身份验证,我需要将用户密码导入Firebase,以避免每个人都需要重置密码 . 我设置了一个测试用户并将其导入,但导入后我发现Firebase拒绝了用户的密码 .
我正在提交这个JSON文件:
{"users": [{"localId": "5e722b92dd784e7fa37b98f94790a87e", "email": "test@test.com", "emailVerified": true, "passwordHash": "6ZoYxCjLONXyYIU2eJIuAw==", "displayName": "Test"}]}
我试过在上面添加“salt”:“”但它没有效果 .
我正在使用此命令执行:
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 ==
任何人都可以看到我在这里做错了什么之前经历过这个过程吗?
1 回答
该问题中的代码问题是它已将MD5的十六进制数字转换为base64 . 您实际需要做的是将十六进制数字的字符串转换为base64 . 所以以上面的例子为例
abc123的MD5是'e99a18c428cb38d5f260853678922e03' . 您需要将此转换为base64作为字符串,等于'ZTk5YTE4YzQyOGNiMzhkNWYyNjA4NTM2Nzg5MjJlMDM ='
以下是问题中代码的更正版本: