2016-06-14 10 views
32

La (poco chiaro) esempio nel new docs:Come creare l'oggetto "credenziale" richiesto dal metodo user.reauthenticate() di Firebase?

var user = firebase.auth().currentUser; 
var credential; 
// Prompt the user to re-provide their sign-in credentials 
user.reauthenticate(credential).then(function() { 

Con il client Firebase v3, come devo creare questo oggetto credential?

ho provato:

  • reauthenticate(email, password) (come il metodo di login)
  • reauthenticate({ email, password }) (i documenti menzionano un argomento solo)

Nessuna fortuna :(

PS: Non conto le ore sprecate alla ricerca di informazioni pertinenti nei nuovi documenti ... Mi manca tanto il favoloso Firebase. com docs, ma volevo passare a v3 per firebase.storage ...

risposta

57

sono riuscito a farlo funzionare, documenti devono essere aggiornati per includere questo per chi non vuole spendere troppo tempo nella esaustivo, ma - riferimento difficile da leggere

L'oggetto credenziale viene creato in questo modo:

const user = firebase.auth().currentUser; 
const credential = firebase.auth.EmailAuthProvider.credential(
    user.email, 
    userProvidedPassword 
); 
+0

Stavo arrivando. :) – adolfosrs

+3

È bello sapere che hai trovato la soluzione! Aggiungerò una nota per aggiornare/chiarire i documenti. E tieni presente che c'è anche un pulsante di feedback su ogni pagina per quello scopo specifico. :-) –

+0

Cool, +1 per il pulsante di feedback (non l'ho visto all'inizio) – Pandaiolo

0

Sono d'accordo sul fatto che la documentazione non è abbastanza chiara su questo. Ma guardando un po 'più a fondo sul riferimento API ho trovato firebase.auth.AuthCredential e this e credo che dovresti cercare di passarlo a reauthenticate().

Sto indovinando qui ma vorrei iniziare a cercare di registrare il firebase.auth() per vedere se c'è qualche oggetto credential lì.

Suppongo che avrà un aspetto simile al seguente:

user.reauthenticate(firebase.auth().credential).then(function() { 
+0

Sono riuscito a farlo funzionare, sto scrivendo una risposta. Hai dimenticato l'e-mail e la password nella tua risposta :) – Pandaiolo

+0

La tua ipotesi non funziona. – Rohmer

-1
final FirebaseUser fireBaseUser = FirebaseAuth.getInstance().getCurrentUser(); 
AuthCredential credential = EmailAuthProvider.getCredential(fireBaseUser.getEmail(), storedPassword); 
fireBaseUser.reauthenticate(credential).addOnCompleteListener(new OnCompleteListener<Void>() { 
    @Override 
    public void onComplete(@NonNull Task<Void> reAuthenticateTask) { 
      if (!reAuthenticateTask.isSuccessful()) 
       ... 
    } 
}); 
+0

Questo non è javascript ... – Rohmer

8

risposta completa - è possibile effettuare le seguenti operazioni:

var user = firebase.auth().currentUser; 
var credentials = firebase.auth.EmailAuthProvider.credential(
    user.email, 
    'yourpassword' 
); 
user.reauthenticateWithCredential(credentials); 

prega di notare che reauthenticateWithCredential è la versione aggiornata di reauthenticate()

+1

Grazie per aver aggiunto la terza riga mancante risposta accettata – Rohmer

Problemi correlati