вот мой код:
var user = firebase.auth().currentUser;
if (user != null) {
user.providerData.forEach(function (profile) {
console.info("Sign-in provider: " + profile.providerId);
console.info(" Provider-specific UID: " + profile.uid);
console.info(" Name: " + profile.displayName);
console.info(" Email: " + profile.email);
console.info(" Photo URL: " + profile.photoURL);
});
}
Когда я набираю этот код в консоли, он возвращает мне обычные значения (имя пользователя, адрес электронной почты и прочее) Когда я помещаю тот же код в файл .js, включенный в .html, он ничего не делает. Как это исправить? Я даже не получаю никаких ошибок в консоли.
Редактировать: Также после записи данных в консоль в конце пишет "не определено"
Дополнительные пояснения: Я пытаюсь получить электронную почту пользователя, вошедшего в систему, который будет записан в консоли.
Я вошел в систему перед перенаправлением на эту страницу. Если я не вошел в систему, это не дало бы мне правильной информации в консоли при написании этого непосредственно при загрузке страницы.
Как объясняется в документе , «currentUser
может быть нулевым, потому что объект auth
не завершил инициализацию».
В документе также объясняется, что «рекомендуемый способ получить текущего пользователя — установить наблюдателя для объекта auth
» следующим образом:
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
user.providerData.forEach(function (profile) {
console.info("Sign-in provider: " + profile.providerId);
console.info(" Provider-specific UID: " + profile.uid);
console.info(" Name: " + profile.displayName);
console.info(" Email: " + profile.email);
console.info(" Photo URL: " + profile.photoURL);
});
} else {
// No user is signed in.
}
});
Я как раз собирался напечатать это тоже, так что .. проголосовал. @niks19: проблема в том, что на вашей странице код теперь запускается до того, как Firebase восстановит состояние аутентификации пользователя, поэтому firebase.auth().currentUser
это null
. К тому времени, когда вы запустите тот же код в консоли, Firebase, скорее всего, восстановит состояние аутентификации, и у вас действительно будет пользователь. Использование прослушивателя состояния аутентификации, как показывает Рено, решает эту проблему синхронизации.
Извините, что на пару секунд быстрее, @FrankvanPuffelen :-) Спасибо за голосование и за точность в консольном "хронометраже".
Возможно, вы получаете неопределенность, потому что не вошли в систему. Есть ли способ проверить, вошел ли пользователь в систему?