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

时间:2017-10-05 20:16:08

标签: firebase migration firebase-authentication

我一直致力于将现有应用迁移到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 ==

在看到我在这里做错了什么之前,有人可以经历这个过程吗?

1 个答案:

答案 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())