在服务器/管理员上创建帐户后发送Firebase重置密码电子邮件

时间:2018-06-22 01:34:06

标签: firebase firebase-authentication google-cloud-functions firebase-admin

我正在创建一个网站,企业可以在此网站上免费向其客户/用户提供我的服务。对于要添加用户的企业(在其企业帐户下),企业登录并输入其客户/用户电子邮件之一。然后,我将客户端/用户电子邮件发送给firebase函数并以编程方式创建一个帐户。

我想向该新用户发送一封电子邮件,上面写着“创建帐户:重置密码”之类的内容,我可以使用浏览器上的sendPasswordResetEmail来执行此操作,但是此功能在Firebase功能/管理员上不可用。

我认为最好的选择是为每个新用户随机生成一个密码(即“ ef53gs”),并在“欢迎电子邮件”中共享新密码,但是我认为,如果欢迎使用,将是更好的体验电子邮件中包含一个链接,可用于(重新)设置其密码。

有什么主意如何使诸如sendPasswordResetEmail之类的东西可用于Firebase函数?

5 个答案:

答案 0 :(得分:5)

我们遇到了相同的问题,因为firebase-admin没有sendPasswordResetEmail() SDK那样的firebase。我们最终只使用了服务器上的firebase客户端SDK以及firebase-admin。效果很好。

答案 1 :(得分:0)

这将是多租户或多级别管理员类型的应用程序解决方案。只需创建一个Web界面,每个企业就可以将用户添加到他们的服务中。您将需要使用Admin SDK(服务器)为每个企业管理员生成权限。参见:

  

Control Access with Custom Claims and Security Rules

     

Firebase Admin SDK支持在用户帐户上定义自定义属性。这个   提供实施各种访问控制策略的能力,   在Firebase应用中包括基于角色的访问控制。这些习俗   属性可以为用户提供不同级别的访问权限(角色),   是在应用程序的安全规则中强制执行的。

答案 2 :(得分:0)

我认为一种更好的方法是实际使用REST API从管理员重置用户密码,而无需将客户端库添加到管理站点。

curl 'https://www.googleapis.com/identitytoolkit/v3/relyingparty/getOobConfirmationCode?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"requestType":"PASSWORD_RESET","email":"[user@example.com]"}'

[API KEY]可以从“项目设置”中检索>添加一个应用>>单击“ Web”,您将获得一个带有JSON的配置,在JSON中有一个您需要使用的APIKey。

答案 3 :(得分:0)

管理员sdk有一个generatePasswordResetLink,它将为您创建链接,但是它就在您身上,然后可以使用您想要的任何服务(例如mailgun或mandrill)来发送电子邮件。这也使您可以更好地控制电子邮件模板。

答案 4 :(得分:0)

pb = pyrebase.initialize_app(json.load(open('fbconfig.json')))
link=pb.auth().send_password_reset_email(email)
print("We have sent an password reset link to your email, check your inbox ")

以上代码与服务器sidem中的python admin sdk相关,无需自定义模板或smtp服务即可发送电子邮件