首页 文章

将现有用户迁移到Firebase身份验证

提问于
浏览
1

我一直在努力将现有应用迁移到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 回答

  • 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())
    

相关问题