Reauthenticating users

Certain sensitive operations—such as deleting an account, updating a user's email, changing a password, or enabling multi-factor authentication—require the user to have signed in recently. If you perform one of these actions, and the user signed in too long ago, the action fails with an error. Depending on the use case, this can be done with reauthenticateWithPopup() , reauthenticateWithRedirect() or reauthenticateWithCredential() .

Web version 9

 import 
  
 { 
  
 getAuth 
 , 
  
 reauthenticateWithPopup 
 , 
  
 OAuthProvider 
  
 } 
  
 from 
  
 "firebase/auth" 
 ; 
 // Result from Redirect auth flow. 
 const 
  
 auth 
  
 = 
  
 getAuth 
 (); 
 const 
  
 provider 
  
 = 
  
 new 
  
 OAuthProvider 
 ( 
 'apple.com' 
 ); 
 reauthenticateWithPopup 
 ( 
 auth 
 . 
 currentUser 
 , 
  
 provider 
 ) 
  
 . 
 then 
 (( 
 result 
 ) 
  
 = 
>  
 { 
  
 // User is re-authenticated with fresh tokens minted and can perform 
  
 // sensitive operations like account deletion, or updating their email 
  
 // address or password. 
  
 // The signed-in user info. 
  
 const 
  
 user 
  
 = 
  
 result 
 . 
 user 
 ; 
  
 // You can also get the Apple OAuth Access and ID Tokens. 
  
 const 
  
 credential 
  
 = 
  
 OAuthProvider 
 . 
 credentialFromResult 
 ( 
 result 
 ); 
  
 const 
  
 accessToken 
  
 = 
  
 credential 
 . 
 accessToken 
 ; 
  
 const 
  
 idToken 
  
 = 
  
 credential 
 . 
 idToken 
 ; 
  
 // ... 
  
 }) 
  
 . 
 catch 
 (( 
 error 
 ) 
  
 = 
>  
 { 
  
 // Handle Errors here. 
  
 const 
  
 errorCode 
  
 = 
  
 error 
 . 
 code 
 ; 
  
 const 
  
 errorMessage 
  
 = 
  
 error 
 . 
 message 
 ; 
  
 // The email of the user's account used. 
  
 const 
  
 email 
  
 = 
  
 error 
 . 
 customData 
 . 
 email 
 ; 
  
 // The credential that was used. 
  
 const 
  
 credential 
  
 = 
  
 OAuthProvider 
 . 
 credentialFromError 
 ( 
 error 
 ); 
  
 // ... 
  
 }); 
  

Web version 8

 const 
  
 provider 
  
 = 
  
 new 
  
 firebase 
 . 
 auth 
 . 
 OAuthProvider 
 ( 
 'apple.com' 
 ); 
 firebase 
  
 . 
 auth 
 () 
  
 . 
 currentUser 
  
 . 
 reauthenticateWithPopup 
 ( 
 provider 
 ) 
  
 . 
 then 
 (( 
 result 
 ) 
  
 = 
>  
 { 
  
 // User is re-authenticated with fresh tokens minted and can perform 
  
 // sensitive operations like account deletion, or updating their email 
  
 // address or password. 
  
 /** @type {firebase.auth.OAuthCredential} */ 
  
 var 
  
 credential 
  
 = 
  
 result 
 . 
 credential 
 ; 
  
 // The signed-in user info. 
  
 var 
  
 user 
  
 = 
  
 result 
 . 
 user 
 ; 
  
 // You can also get the Apple OAuth Access and ID Tokens. 
  
 var 
  
 accessToken 
  
 = 
  
 credential 
 . 
 accessToken 
 ; 
  
 var 
  
 idToken 
  
 = 
  
 credential 
 . 
 idToken 
 ; 
  
 // IdP data available in result.additionalUserInfo.profile. 
  
 // ... 
  
 }) 
  
 . 
 catch 
 (( 
 error 
 ) 
  
 = 
>  
 { 
  
 // Handle Errors here. 
  
 var 
  
 errorCode 
  
 = 
  
 error 
 . 
 code 
 ; 
  
 var 
  
 errorMessage 
  
 = 
  
 error 
 . 
 message 
 ; 
  
 // The email of the user's account used. 
  
 var 
  
 email 
  
 = 
  
 error 
 . 
 email 
 ; 
  
 // The firebase.auth.AuthCredential type that was used. 
  
 var 
  
 credential 
  
 = 
  
 error 
 . 
 credential 
 ; 
  
 // ... 
  
 }); 
  

Example: reauthenticateWithCredential()

Web version 9

 import 
  
 { 
  
 getAuth 
 , 
  
 reauthenticateWithCredential 
  
 } 
  
 from 
  
 "firebase/auth" 
 ; 
 const 
  
 auth 
  
 = 
  
 getAuth 
 (); 
 const 
  
 user 
  
 = 
  
 auth 
 . 
 currentUser 
 ; 
 // TODO(you): prompt the user to re-provide their sign-in credentials 
 const 
  
 credential 
  
 = 
  
 promptForCredentials 
 (); 
 reauthenticateWithCredential 
 ( 
 user 
 , 
  
 credential 
 ). 
 then 
 (() 
  
 = 
>  
 { 
  
 // User re-authenticated. 
 }). 
 catch 
 (( 
 error 
 ) 
  
 = 
>  
 { 
  
 // An error ocurred 
  
 // ... 
 }); 
  

Web version 8

 const 
  
 user 
  
 = 
  
 firebase 
 . 
 auth 
 (). 
 currentUser 
 ; 
 // TODO(you): prompt the user to re-provide their sign-in credentials 
 const 
  
 credential 
  
 = 
  
 promptForCredentials 
 (); 
 user 
 . 
 reauthenticateWithCredential 
 ( 
 credential 
 ). 
 then 
 (() 
  
 = 
>  
 { 
  
 // User re-authenticated. 
 }). 
 catch 
 (( 
 error 
 ) 
  
 = 
>  
 { 
  
 // An error occurred 
  
 // ... 
 }); 
  
Design a Mobile Site
View Site in Mobile | Classic
Share by: