如何在firebase中的默认auth:export之后为auth:import设置哈希键选项?

如何在firebase中的默认auth:export之后为auth:import设置哈希键选项?,firebase,firebase-authentication,firebase-tools,Firebase,Firebase Authentication,Firebase Tools,我已将用户导出到CLI中: firebase auth:export my_users.json 导出文件中的密码应使用SCRYPT散列,因为正如文档所述: auth:export命令仅导出使用scrypt算法散列的密码,该算法由Firebase后端使用。使用其他算法对密码进行哈希处理的帐户记录将导出为空passwordHash和salt字段。在从文件导入用户记录后,项目可能会使用其他算法对密码进行散列,因为只有在导入的用户首次登录时,才会使用scrypt对密码进行重新散列 我的哈希键和sal

我已将用户导出到CLI中:

firebase auth:export my_users.json
导出文件中的密码应使用SCRYPT散列,因为正如文档所述:

auth:export命令仅导出使用scrypt算法散列的密码,该算法由Firebase后端使用。使用其他算法对密码进行哈希处理的帐户记录将导出为空passwordHash和salt字段。在从文件导入用户记录后,项目可能会使用其他算法对密码进行散列,因为只有在导入的用户首次登录时,才会使用scrypt对密码进行重新散列

我的哈希键和salt字段在结果中不是空的。 而且,我知道我的所有用户至少登录一次

现在,当我尝试导入我的_users.json时:

firebase auth:import --hash-algo=SCRYPT --rounds=1 my_users.json
我得到以下错误:

Must provide hash key(base64 encoded) for hash algorithm SCRYPT
但是,既然auth:export命令没有任何参数,那么我应该将--hash key设置为什么呢


提前感谢

,现在您可以从firebase控制台GUI获取哈希键和salt信息。 出于某种原因,我不得不在chrome中进入匿名模式(firebase支持人员建议这样做)

然后,我可以在匿名浏览器中登录firebase控制台

(请注意,您需要使用正在复制用户的firebase实例。) 从,而不是将用户复制到的对象)

单击“身份验证->用户” 然后单击“重新加载”按钮旁边的三个垂直点,弹出菜单将显示一个菜单项:“密码哈希参数”

单击此菜单项以及执行此操作所需的所有设置 firebase auth:import命令将显示。 我看到的是:

hash_config {
  algorithm: SCRYPT,
  base64_signer_key: <long string of random characters>,
  base64_salt_separator: <short string of random characters>,
  rounds: 8,
  mem_cost: 14,
}
hash\u-config{
算法:SCRYPT,
base64\u签名者\u密钥:,
base64_盐_分离器:,
轮数:8轮,
成员成本:14,
}
然后我可以成功地执行命令

firebase auth:import ./users.json --hash-algo=scrypt --rounds=8 --mem-cost=14 --hash-key=<long string of random characters> --salt-separator=<short string of random characters>
firebase auth:import./users.json--hash algo=scrypt--rounds=8--mem cost=14--hash key=--salt separator=

参考Firebase文档-“Firebase身份验证密码哈希”:

查找密码哈希参数 Firebase为每个Firebase项目生成唯一的密码哈希参数。要访问这些参数,请导航到Firebase控制台中“身份验证”部分的“用户”选项卡,并从用户表右上角的下拉列表中选择“密码哈希参数”


似乎没有通过cli获取哈希参数的选项。因此,我认为GUI是唯一的方法(正如Geoffrey Wall在文章中提到的)。

目前我找到的唯一解决方法是要求用户在导入后重置密码,正如Bryan Lewis也提到的那样。唯一的好处是,他们可以设置与以前完全相同的密码:|我刚刚尝试过做同样的事情-默认导出用户,然后将其导入到同一个firebase项目中。我发现,尽管工具打印了此警告消息,但在import命令中未提供哈希算法,导致导入工作正常“未指定哈希算法。无法导入密码用户。“。这仅在导入到进行导出的同一个项目中时有效。您使用哪个工具获得进入
users.json
?@nalply中passwordHash字段的字符串?您可以使用firebase cli,如本文所述:不,这不是我想问的。让我再问一遍。JSON文件有一个字段“passwordHash”。你是如何得到这个字段的值的?换句话说:
“passwordHash”:
:如何获取长字符串?@nalpy您要查找的字符串可以通过单击上面屏幕截图中所示的3个垂直点来获取。按下3个垂直点后将弹出一个小菜单,您需要选择菜单项:“密码哈希参数”。散列配置参数将如上所述显示。不,这不是我想问的。让我再问一遍。我已经有了密码散列参数。但是我不知道如何用密码散列参数散列密码。无论我尝试了什么,Firebase认证都不接受它。