Поставщик аутентификации по электронной почте / паролю возвращает пустую запись пользователя - PullRequest
0 голосов
/ 10 января 2019

У меня есть облачная функция, которая запускается при создании пользователя Auth. Я просматриваю данные пользователя (адрес электронной почты, имя и т. Д.), Чтобы заполнить мою БД Он внезапно перестал работать для типа провайдера аутентификации 'email / password'. Admin.auth (). GetUser (uid) теперь возвращает userRecord, которая содержит неопределенные / нулевые значения для большинства полей. Это, казалось бы, перестало работать из ниоткуда в Производстве после нескольких недель работы, есть ли какое-либо возможное объяснение?

exports.createUser = functions.auth.user().onCreate((user) => {
    return createEmailUser(user);
});

function createEmailUser(user) {
    const uid = user.uid;
    return admin.auth().getUser(uid)
    .then(function(userRecord) {
        console.log(userRecord);
        const email = userRecord.email;
        const fullName = userRecord.displayName;
        admin.database().ref('users/' + uid).set({
            email: email,
            name: fullName
        });
    })
    .catch(function(error) {
        console.log("Error fetching user data:", error);
    });
}

В прошлом объект userRecord содержал допустимые значения email и displayName. Теперь я вижу такой объект:

UserRecord {
    uid: 'Lrtj8zafsnYjZl4ckMgwNkgEiVH2',
    email: undefined,
    emailVerified: false,
    displayName: undefined,
    photoURL: undefined,
    phoneNumber: undefined,
    disabled: false,
    metadata: 
        UserMetadata {
            creationTime: 'Wed, 09 Jan 2019 21:40:31 GMT',
            lastSignInTime: null },
    providerData: [],
    passwordHash: undefined,
    passwordSalt: undefined,
    customClaims: undefined,
    tokensValidAfterTime: 'Wed, 09 Jan 2019 21:40:31 GMT' }

1 Ответ

0 голосов
/ 29 января 2019

Поскольку пользователи регистрируются с помощью метода электронной почты / пароля, в userRecord доступен только адрес электронной почты. Другие поставщики входа могут иметь разные данные при создании пользователя.

Здесь вы можете проверить пользовательские данные при создании профиля и обновить профиль с помощью updateUser, если чего-то не хватает:

function createEmailUser(user) {
    const uid = user.uid;

    admin.auth().updateUser(uid, {
      phoneNumber: "+11234567890",
      displayName: "Foo Bar"
    })

    .then(function(userRecord) {
          console.log(userRecord);
    })
    .catch(function(error) {
        console.log("Error fetching user data:", error);
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...