To, co się tutaj dzieje, to to, że mam aplikację, w której użytkownicy mogą się zarejestrować, jeśli zostaną zaproszeni. Dotychczasowi użytkownicy muszą wypełnić formularz z danymi zaproszonego użytkownika i adresem e-mail. Następnie dane te zostaną przesłane do bazy danych Firebase z unikalnym kluczem wygenerowanym przez .push(). Następnie aplikacja wysyła wiadomość e-mail na podany adres e-mail z unikalnym adresem URL rejestracji. Wygląda to tak: ${host}/register/?uid=${keyGeneratedByPush}. Gdy zaproszony użytkownik kliknie łącze, przeglądarka pobierze identyfikator użytkownika z ciągu zapytania i pobierze wraz z nim dane z bazy danych. Jeśli wszystko pójdzie dobrze, użytkownik kliknie Prześlij i createUserWithEmailAndPassword() zostanie wywołany. Problem jest następny: auth() wygeneruje unikalny identyfikator (uid), ale mam już istniejący identyfikator użytkownika (generowany przez push). To, co chcę, aby były takie same, to jeśli zaloguje się użytkownik, mogę uzyskać user.uid i pobrać z niego dane z bazy danych. Możliwym rozwiązaniem może być pobranie wszystkich użytkowników, przejście przez nich w pętli i znalezienie adresu e-mail otrzymanego przez obiekt użytkownika, ale dlaczego, jeśli mamy identyfikatory. Więc jak sprawić, by te dwa identyfikatory były takie same?

0
Gergő Horváth 9 listopad 2018, 20:44

1 odpowiedź

Najlepsza odpowiedź

Możesz utworzyć niestandardowego dostawcę uwierzytelniania i użyć tam identyfikatora push jako swojego UID.

Ale odradzam to robić. Widzę token rejestracji/zaproszenia w zaproszeniu jako inny podmiot niż wygenerowany przez Ciebie UID. Chociaż (w zależności od przypadku użycia) może istnieć między nimi mapowanie 1:1, wartości mają różne znaczenia. Jeden identyfikuje konkretne zaproszenie wysłane do potencjalnego użytkownika, drugi identyfikuje konkretnego użytkownika.

Zachowałbym listę (oczekujących) tokenów zaproszeń i adres e-mail, na który zostały wysłane. Następnie, gdy użytkownik kliknie łącze w zaproszeniu, możesz sprawdzić, czy jest to poprawny adres e-mail (jeśli Ci na tym zależy) i powiązać ewentualny UID z kodem zaproszenia (jeśli Ci na tym zależy).

1
Frank van Puffelen 9 listopad 2018, 21:01