我一直致力于将现有应用迁移到Firebase身份验证,我需要将用户密码导入Firebase,以避免每个人都需要重置密码。我设置了一个测试用户并将其导入,但导入后我发现Firebase拒绝了用户的密码。
我提交此JSON文件:
sftp.connect({
host: 'ftp.site.com',
port: '22',
username: 'myusername',
password: 'mypassword',
algorithms: {
serverHostKey: [ 'ssh-dss' ],
kex: ['diffie-hellman-group14-sha1'],
cipher: ['aes128-cbc']
}
}).then(() => {
sftp.put('./CSV/myspreadsheet.csv', '/myspreadsheet.csv', false);
}).then((data) => {
console.log(data, 'the data info');
}).catch((err) => {
console.log(err, 'catch error');
});
我已尝试添加"盐":""以上,但没有效果。
我正在执行此命令:
{"users": [{"localId": "5e722b92dd784e7fa37b98f94790a87e", "email": "test@test.com", "emailVerified": true, "passwordHash": "6ZoYxCjLONXyYIU2eJIuAw==", "displayName": "Test"}]}
哪个成功运行并添加了用户。但是用户只是得到了#34;提供的密码不正确或者用户没有设置密码"当我尝试使用它们登录时。
价值"轮次"是我从网上的例子中得到的东西。我还尝试过1,4和64,但没有成功。
此测试帐户的密码为abc123。我已经确认abc123的base64 MD5是6ZoYxCjLONXyYIU2eJIuAw ==这个Python:
firebase auth:import firebaseUsers.json --hash-algo=MD5 --rounds 0 --project projectname
确实输出6ZoYxCjLONXyYIU2eJIuAw ==
在看到我在这里做错了什么之前,有人可以经历这个过程吗?
答案 0 :(得分: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())