无法使用CLI Firebase auth:import命令导入用户帐户

时间:2016-11-25 06:24:46

标签: firebase firebase-authentication

我需要在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',

消息:'密码无效或用户没有密码。' }

我无法弄清楚出了什么问题。你能帮助我吗?

由于

2 个答案:

答案 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==

所以我得到你的结果,这是正常的!

谢谢!