Использование UID провайдера в качестве идентификатора Firestore в аутентификации AngularFire2 - PullRequest
0 голосов
/ 23 февраля 2019

Я хочу добавить Google, Facebook и пользовательский логин в мое веб-приложение Angular7.

Является ли идентификатор UID, предоставленный каждым поставщиком, уникальным?Я имею в виду, могу ли я использовать его в качестве идентификатора пользователя в коллекции моих пользователей Firestore ?

И если это так, могу ли я по-прежнему использовать метод createId() для генерации этого идентификатора самостоятельно вмой пользовательский логин?Или это может быть один из идентификаторов UID одного из провайдеров?

1 Ответ

0 голосов
/ 23 февраля 2019

Да, вы можете использовать его как UID в своей коллекции пользователей.

Вот мой процесс аутентификации:

1 / Пользователь создает новую учетную запись с адресом электронной почты / паролем

async signUpWithPassword(email, password) {
  await firebase.auth().createUserWithEmailAndPassword(email, password)
  // user created!
}

2 / Я запускаю облачную функцию с помощью триггеров autCreate, чтобы сохранить пользователя в моей коллекции:

export const createUserProfile = functions.auth
  .user()
  .onCreate((user: admin.auth.UserRecord) => {
     const { uid } = user
     const userRef = db.doc(`users/${uid}`)
     // Save it to firestore
     return userRef.set({ points: 200 })
})

3 / Если этот пользователь пытается зарегистрироваться у другого поставщика (Google / Facebook и т. Д.)), Я определяю, использует ли он тот же адрес электронной почты, и поэтому я связываю нового провайдера с текущим через привязку аккаунта:

https://firebase.google.com/docs/auth/web/account-linking

Таким образом, пользователь собираетсяк одному уникальному UID / профилю подключено несколько провайдеров аутентификации.

...