javascript - Cum să creezi obiectul „credential” necesar metodei Firebase web user.reauthenticateWithCredential()?
Exemplul (neclar) din noile documente:
var user = firebase.auth().currentUser;
var credential;
// Prompt the user to re-provide their sign-in credentials
user.reauthenticateWithCredential(credential).then(function() {
Cum ar trebui să creez acest obiect credential?
Am încercat:
reauthenticateWithCredential(email, password)(ca metoda de autentificare)reauthenticateWithCredential({ email, password })(documentația menționează doar un singur argument)
Nicio șansă :(
PS: Nu număr orele pierdute căutând informații relevante în noile documentații... Îmi lipsesc foarte mult fabuloasele documentații firebase.com, dar am vrut să trec la v3 sau superior pentru firebase.storage...
Răspuns #1
Am reușit să fac să funcționeze, documentația ar trebui actualizată pentru a include acest lucru pentru cei care nu doresc să petreacă prea mult timp în referința API-ului exhaustivă, dar dificil de citit.
Firebase 8.x
Obiectul de acreditare este creat astfel:
const user = firebase.auth().currentUser;
const credential = firebase.auth.EmailAuthProvider.credential(
user.email,
userProvidedPassword
);
// Now you can use that to reauthenticate
user.reauthenticateWithCredential(credential);
Firebase 9.x
(Mulțumesc @Dako Junior pentru răspunsul său pe care îl adaug aici pentru exhaustivitate)
import {
EmailAuthProvider,
getAuth,
reauthenticateWithCredential,
} from 'firebase/auth'
const auth = getAuth()
const credential = EmailAuthProvider.credential(
auth.currentUser.email,
userProvidedPassword
)
const result = await reauthenticateWithCredential(
auth.currentUser,
credential
)
// User successfully reauthenticated. New ID tokens should be valid.
Notă
Unii oameni au întrebat despre userProvidedPassword, dacă era un fel de variabilă stocată de la primul login. Nu este, ar trebui să deschizi un nou dialog/pagină cu un câmp de parolă, iar utilizatorul va introduce parola lor din nou.
Insist să nu încercați să ocoliți acest lucru stocând parola utilizatorului în text clar. Aceasta este o caracteristică normală a unei aplicații. În GMail, de exemplu, uneori sesiunea expiră, sau există suspiciunea unui hack, vă schimbați locația etc. GMail vă cere parola din nou. Aceasta este reautentificarea.
Nu se va întâmpla des, dar o aplicație care folosește Firebase ar trebui să îl suporte sau utilizatorul se va împotmoli la un moment dat.
Răspunsul #2
Răspuns complet - poți folosi următoarele:
var user = firebase.auth().currentUser;
var credentials = firebase.auth.EmailAuthProvider.credential(
user.email,
'yourpassword'
);
user.reauthenticateWithCredential(credentials);
Vă rugăm să rețineți că reauthenticateWithCredential este versiunea actualizată a reauthenticate()
