Отправка подтверждения электронной почты с помощью Firebase с использованием AngularFire v6 - PullRequest
2 голосов
/ 21 июня 2020

Я пытаюсь зарегистрировать пользователя, используя адрес электронной почты и пароль. Если функция регистрации работает, то письмо будет отправлено на адрес электронной почты пользователя, это письмо должно содержать ссылку, которую пользователь нажмет, чтобы подтвердить адрес электронной почты. Я пытался сделать это с помощью функции AngularFireAuth.auth.currentUser.sendEmailVerification () , она не работает: эта версия AngularFire / Firebase не поддерживает этот метод. Вы можете мне помочь?

import {Injectable, NgZone} from '@angular/core';
import {AngularFireAuth} from '@angular/fire/auth';
import {first} from 'rxjs/internal/operators/first';
import * as firebase from 'firebase';
import {AngularFirestore} from '@angular/fire/firestore';

@Injectable({
  providedIn: 'root'
})
export class AuthService {
  public userId: string;

  constructor(
      private afAuth: AngularFireAuth,
      private afStore: AngularFirestore,
      public ngZone: NgZone
  ) { }

  getUser(): Promise<firebase.User>{
    return this.afAuth.authState.pipe(first()).toPromise();
  }
  loginWithEmailAndPassword(email: string, password: string): Promise<firebase.auth.UserCredential>{
    return this.afAuth.signInWithEmailAndPassword(email, password);
  }
  async registerWithEmailAndPassword(email: string, password: string): Promise<firebase.auth.UserCredential>{
    const newUserCredential: firebase.auth.UserCredential = await this.afAuth.createUserWithEmailAndPassword(email, password);
    this.afStore.collection('users').doc(`${newUserCredential.user.uid}`).set({
      uid: newUserCredential.user.uid,
      email: newUserCredential.user.email,
      created_at: firebase.firestore.FieldValue.serverTimestamp()
    }).then(function() {
      console.log("user is registered");
      this.sendEmailVerification();
    }).catch(function(error) {
      console.error("Error adding document: ", error);
    });
    return newUserCredential;
  }

  async sendEmailVerification() {
    
  }

  resetPassword(email: string): Promise<void>{
    return this.afAuth.sendPasswordResetEmail(email);
  }

  logout(): Promise<void>{
    return this.afAuth.signOut();
  }

  async createPersonalProfile(){

  }
}

1 Ответ

1 голос
/ 21 июня 2020

Я нашел. Просто используйте эту функцию после того, как вы вошли в систему. не используйте его, если ни один пользователь не вошел в систему.

firebase.auth().currentUser.sendEmailVerification()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...