我需要在Firebase中导入一个包含电子邮件和密码的用户列表。
我正在尝试使用CLI auth:import命令在Firebase中导入用户。 (https://firebase.google.com/docs/cli/auth-import)
我选择了 HMAC_MD5 哈希算法,
我正在使用 helpmeplease 作为加密的秘密字符串 - >在Base64中,因为 aGVscG1lcGxlYXNl
我正在使用 mypass 作为测试密码:使用HMAC_MD5加密并秘密“helpmeplease”,因为 3a52377f6635d298436013953a1ce4dd ,并且在Bas64中名称 M2E1MjM3N2Y2NjM1ZDI5ODQzNjAxMzk1M2ExY2U0ZGQ =
我正在使用users.json
{ "users": [
{
"localId": "9997",
"email": "test@test.com",
"passwordHash": "M2E1MjM3N2Y2NjM1ZDI5ODQzNjAxMzk1M2ExY2U0ZGQ=",
"displayName": "9997",
}
] }
我使用命令:
**firebase auth:import --hash-algo='HMAC_MD5' --hash-key='aGVscG1lcGxlYXNl' --project='my-project-name-test' users.json**
结果是:
处理users.json(194字节)
开始导入1个帐户。
✔成功导入。
并在用户数据库中导入用户。
但是......当我尝试使用时登录 auth()。signInWithEmailAndPassword('test@test.com','mypass') ..我收到此错误:
{[错误:密码无效或用户没有密码。] 代码:'auth / wrong-password',
消息:'密码无效或用户没有密码。' }
我无法弄清楚出了什么问题。你能帮助我吗?
由于
答案 0 :(得分:6)
您的密码哈希似乎不正确。你能指出如何生成HMAC_MD5哈希?
我使用以下NodeJS代码片段来创建HMAC_MD5密码哈希。
var crypto = require('crypto');
crypto.createHmac('md5', 'helpmeplease').update('mypass').digest().toString('base64');
结果我得到“OlI3f2Y10phDYBOVOhzk3Q ==”。然后我使用您帖子中的命令将用户导入Firebase Auth。我确认我可以成功登录。
答案 1 :(得分:1)
谢谢@ wyhao31
我使用PHP获取需要在Firebase中导入的用户,数据和密码。
我以错误的方式使用了hash_hmac()PHP函数:
$secret = "helpmeplease";
$password = "mypass";
$hmac_md5 = hash_hmac('md5', $password, $secret); //3a52377f6635d298436013953a1ce4dd
$base64 = base64_encode($hmac_md5); //M2E1MjM3N2Y2NjM1ZDI5ODQzNjAxMzk1M2ExY2U0ZGQ=
要解决此问题,我需要强制hmac_md5输出原始二进制数据:
$secret = "helpmeplease";
$password = "mypass";
$base64 = base64_encode(hash_hmac('md5', $password, $secret, TRUE)); //OlI3f2Y10phDYBOVOhzk3Q==
所以我得到你的结果,这是正常的!
谢谢!