我正在创建一个网站,企业可以在此网站上免费向其客户/用户提供我的服务。对于要添加用户的企业(在其企业帐户下),企业登录并输入其客户/用户电子邮件之一。然后,我将客户端/用户电子邮件发送给firebase函数并以编程方式创建一个帐户。
我想向该新用户发送一封电子邮件,上面写着“创建帐户:重置密码”之类的内容,我可以使用浏览器上的sendPasswordResetEmail来执行此操作,但是此功能在Firebase功能/管理员上不可用。
我认为最好的选择是为每个新用户随机生成一个密码(即“ ef53gs”),并在“欢迎电子邮件”中共享新密码,但是我认为,如果欢迎使用,将是更好的体验电子邮件中包含一个链接,可用于(重新)设置其密码。
有什么主意如何使诸如sendPasswordResetEmail之类的东西可用于Firebase函数?
答案 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服务即可发送电子邮件