@@ -216,7 +216,7 @@ export class AuthImpl implements AuthInternal, _FirebaseService {
216216 }
217217
218218 setTokenRefreshHandler ( tokenRefreshHandler : TokenRefreshHandler ) : void {
219- this . tokenRefreshHandler = tokenRefreshHandler ;
219+ this . tokenRefreshHandler = tokenRefreshHandler ;
220220 }
221221
222222 /**
@@ -249,33 +249,38 @@ export class AuthImpl implements AuthInternal, _FirebaseService {
249249 await this . _updateCurrentUser ( user , /* skipBeforeStateCallbacks */ true ) ;
250250 }
251251
252- async getFirebaseAccessToken ( forceRefresh ?: boolean ) :
253- Promise < FirebaseToken | null > {
254- const firebaseAccessToken =
255- ( await this . persistenceManager ?. getFirebaseToken ( ) ) ?? null ;
252+ async getFirebaseAccessToken (
253+ forceRefresh ?: boolean
254+ ) : Promise < FirebaseToken | null > {
255+ const firebaseAccessToken =
256+ ( await this . persistenceManager ?. getFirebaseToken ( ) ) ?? null ;
256257
257- if (
258- firebaseAccessToken &&
259- this . isFirebaseAccessTokenValid ( firebaseAccessToken ) &&
260- ! forceRefresh
261- ) {
262- this . firebaseToken = firebaseAccessToken ;
263- this . firebaseTokenSubscription . next ( this . firebaseToken ) ;
264- return firebaseAccessToken ;
265- }
258+ if (
259+ firebaseAccessToken &&
260+ this . isFirebaseAccessTokenValid ( firebaseAccessToken ) &&
261+ ! forceRefresh
262+ ) {
263+ this . firebaseToken = firebaseAccessToken ;
264+ this . firebaseTokenSubscription . next ( this . firebaseToken ) ;
265+ return firebaseAccessToken ;
266+ }
266267
267- if ( firebaseAccessToken && this . tokenRefreshHandler ) {
268- // Resets the Firebase Access Token to null i.e. logs out the user.
269- await this . _updateFirebaseToken ( null ) ;
268+ if ( firebaseAccessToken && this . tokenRefreshHandler ) {
269+ // Resets the Firebase Access Token to null i.e. logs out the user.
270+ await this . _updateFirebaseToken ( null ) ;
271+ try {
270272 // Awaits for the callback method to execute. The callback method
271273 // is responsible for performing the exchangeToken(auth, valid3pIdpToken)
272274 const result : RefreshIdpTokenResult = await this . tokenRefreshHandler . refreshIdpToken ( ) ;
273275 _assert ( result . idToken && result . idpConfigId , AuthErrorCode . INVALID_CREDENTIAL ) ;
274276 await exchangeToken ( this , result . idpConfigId , result . idToken ) ;
275277 return this . getFirebaseAccessToken ( false ) ;
278+ } catch ( error ) {
279+ console . error ( "Token refresh failed:" , error ) ;
280+ return null ;
276281 }
277-
278- return null ;
282+ }
283+ return null ;
279284 }
280285
281286 private async initializeCurrentUserFromIdToken (
@@ -446,11 +451,10 @@ export class AuthImpl implements AuthInternal, _FirebaseService {
446451 private isFirebaseAccessTokenValid (
447452 firebaseToken : FirebaseToken | null
448453 ) : boolean {
449- if (
454+ if (
450455 firebaseToken &&
451456 firebaseToken . expirationTime &&
452- ( Date . now ( ) >
453- firebaseToken . expirationTime - this . TOKEN_EXPIRATION_BUFFER )
457+ Date . now ( ) > firebaseToken . expirationTime - this . TOKEN_EXPIRATION_BUFFER
454458 ) {
455459 return false ;
456460 }
0 commit comments