一尘不染

firebase管理员SDK创建用户并发送验证电子邮件

angularjs

使用Firebase管理员SDK创建用户后,如何发送验证电子邮件?我正在尝试合并createUser functionsendEmailVerification function 有人可以提示或回答吗?谢谢

更新:

用户创建是由已经在应用中登录的管理员用户完成的,因此该管理员用户只是在仪表板上创建用户。这与注册方法完全不同。

更新2:

我尝试遵循bojeil的回答,但是我仍然坚持用户使用自定义令牌登录的步骤。它与我当前的管理员用户会话发生冲突,管理员用户被踢出,而是新用户登录,即使我退出了新用户,管理员用户仍然退出,需要登录才能重新登录该应用程序。

这是我获得自定义令牌后在应用内的代码:

$http.post('/.custom-token', {uid: $scope.data.data.uid})
        .then(function (response) {
            console.log("custom token here:", response.data.token);
            firebase.auth().signInWithCustomToken(response.data.token)
                .then(function (firebaseUser) {
                    firebaseUser.sendEmailVerification();
                    firebase.auth().signOut().then(function() {
                        // Sign-out successful.
                        console.log("signed out success");
                    }, function(error) {
                        // An error happened.
                    });
                })

                .catch(function(error) {
                    // Handle Errors here.
                    var errorCode = error.code;
                    var errorMessage = error.message;
                    // ...
                });

        });

因此,我得到了令牌,登录了新用户,发送了电子邮件验证链接,然后注销了新用户。但是执行所有这些操作的管理员用户也会被注销。我在这里想念什么?


阅读 240

收藏
2020-07-04

共1个答案

一尘不染

好的,这是您可以做的,但是您可能会遇到配额限制:

  • 包括firebase-admin模块。
  • 包括firebase客户端模块。
  • 使用admin SDK,通过createUser创建新用户
  • 当该承诺解决时,获取创建的用户的uid。
  • 使用admin sdk,为该uid创建自定义令牌。
  • 使用客户端sdk,使用该自定义标记使用signInWithCustom标记。
  • 在该过程中返回了用户,请调用user.sendEmailVerification()
  • 从客户端SDK中注销该用户。
2020-07-04