firebase admin SDK create user and send verification email

前端 未结 4 1821
不思量自难忘°
不思量自难忘° 2020-12-05 11:52

How can I send a verification email after I create a user with firebase admin SDK? I am trying to combine createUser function and sendEmailVerification function could somebo

相关标签:
4条回答
  • 2020-12-05 12:05

    You don't even need to use the Firebase Admin SDK for this. You can just use the regular Firebase client-side SDK:

    firebase.auth().createUserWithEmailAndPassword(email, password)
      .then(function(user) {
         console.log("User successfully created:", user.uid);
         return user.sendEmailVerification();
      })
      .then(function() {
        console.log("Email verification email successfully sent!");
      })
      .catch(function(error) {
        console.log("Error:", error);
      });
    
    0 讨论(0)
  • 2020-12-05 12:12

    According to firebase, the admin-sdk does not currently support this feature. See their response here: https://stackoverflow.com/a/44557980/8177355

    Whenever an email / password authentication user is logged in, and attempts to use a feature that requires authentication, I call onAuthStateChanged() and then check the user's record for email verification.

    If the email is not verified, and I have not sent a verification email before, I send it automatically. I return an error, asking the user to verify their email. (I store a variable in a profile setup for the user in firestore, to indicate whether it has been sent previously).

    On future attempts to use the app, if the email is still not verified, I return the same error, and also include a button in the error labeled "re-send verification email" that triggers sending of the verification email when pressed. (This way I am not automatically sending tons of verification emails every time the user tries to do something.)

    0 讨论(0)
  • 2020-12-05 12:17

    OK this is what you can do but you may hit quota limitations:

    • Include the firebase-admin module.
    • Include the firebase client module.
    • using admin sdk, create the new user via createUser
    • when that promise resolves, get the uid of the user created.
    • using admin sdk, create custom token for that uid.
    • using client sdk, signInWithCustom token using that custom token.
    • A user is returned in the process, call user.sendEmailVerification()
    • signOut that user from the client SDK.
    0 讨论(0)
  • 2020-12-05 12:25

    A rather clean solution would be to actually use the REST APIs.

    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]"}'
    

    The [API KEY] is a web client api key that can be retrieved from Project Settings > add an app >> click web and you will get the configuration with a JSON, within the JSON there is an APIKey that is the one that you need to use.

    0 讨论(0)
提交回复
热议问题