onAuthStateChanged возвращает значение NULL, когда письмо с подтверждением отправляется из ионного приложения, где, как и в Angular, работает та же настройка - PullRequest
0 голосов
/ 18 января 2019

У меня есть страница подтверждения электронной почты в угловом формате и страница регистрации в приложении ionic. Когда я создаю пользователя из angular, все работает хорошо, но когда я регистрирую пользователя из ионного приложения наAuthStateChanged, он не возвращает ни одного пользователя. Застрял здесь надолго, ребята, выручите меня

Для отправки подтверждающего электронного письма я использую AngularFireAuth.auth.currentUser.sendEmailVerification() этот процесс регистрации выполняется в ионном приложении.

Ссылка действия, которую я указал в firebase, является маршрутом на угловом сайте. Для обработки проверки я использую следующий фрагмент кода на хуке жизненного цикла ngOnInit.

AngularFireAuth.auth.onAuthStateChanged((user) => {
 if(user){
  console.log("user verified")
 } else {
  console.log("there are no user state changes");
 }
});

Пользователь всегда имеет значение null, когда ссылка для проверки отправляется с ionic, где, как я пытался сделать то же самое в угловом режиме, он работал, и пользователь проверяется. Я использую одинаковые учетные данные API как в угловых, так и в ионных приложениях. Может кто-нибудь помочь мне решить эту проблему

1 Ответ

0 голосов
/ 04 апреля 2019

Здравствуйте, dev's. Я давно нашел решение для этого, подумал о том, чтобы опубликовать его здесь. Пожалуйста, обратитесь Управление пользователями Firebase !

import* as admin from 'firebase-admin';
import polyfill from 'babel-polyfill';
import serviceAccount from '../google-services.json'


admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: 'your firebase database URL'
});

    const user = () => {
    return new Promise((resolve, reject) => {
        admin.auth().getUserByEmail(req.body.email).then(data=> {
            if(data.emailVerified != true)
            {
                admin.auth().updateUser(data.uid, { emailVerified : true});
                console.log("verify", data);
                resolve(data);
            }
            reject();
            console.log("else result");
        });
    }); 
}

Вы можете запустить firebaseAuthStateChanged вручную, изменив состояние проверки электронной почты в firebase с помощью администратора firebase. Все, что вам нужно сделать, это получить пользователя по uid или по электронной почте, а затем обновить поле emailVerified на true.

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