diff --git a/packages/auth/demo/public/index.html b/packages/auth/demo/public/index.html index 01509d5e1a0..9581513551a 100644 --- a/packages/auth/demo/public/index.html +++ b/packages/auth/demo/public/index.html @@ -883,6 +883,21 @@

Sign in with your CIAM token

Exchange Token

+
+              
+              
Auth Interop Methods
+ +
+

+              
+              
+

             
             

diff --git a/packages/auth/demo/src/index.js b/packages/auth/demo/src/index.js
index c6ccef16337..c73ee02bd72 100644
--- a/packages/auth/demo/src/index.js
+++ b/packages/auth/demo/src/index.js
@@ -22,7 +22,7 @@
  *   package.
  */
 
-import { initializeApp } from '@firebase/app';
+import { initializeApp, _getProvider } from '@firebase/app';
 import {
   applyActionCode,
   browserLocalPersistence,
@@ -97,6 +97,7 @@ const AUTH_EMULATOR_URL = 'http://localhost:9099';
 let app = null;
 let auth = null;
 let regionalAuth = null;
+let authInternalProvider = null;
 let currentTab = null;
 let lastUser = null;
 let applicationVerifier = null;
@@ -1620,6 +1621,7 @@ function onInitializeRegionalAuthClick() {
       popupRedirectResolver: browserPopupRedirectResolver,
       tenantConfig: tenantConfig
     });
+    authInternalProvider = _getProvider(regionalApp, 'auth-internal');
     $('#regional-auth-status').text('✅ regionalAuth is initialized');
     $('#token-handler-status').text('Token refresh handler is not set.');
     const handlerType = localStorage.getItem('tokenRefreshHandlerType');
@@ -1707,6 +1709,29 @@ function onSetFailureHandlerClick() {
   );
 }
 
+async function getFirebaseTokenInterop(forceRefresh) {
+  if (!validateRegionalAuth()) {
+    return;
+  }
+  const tokenDisplay = document.getElementById('tokenDisplay');
+  tokenDisplay.textContent = 'Loading token...';
+  try {
+    const authInternal = authInternalProvider.getImmediate();
+    const token = await authInternal.getToken(forceRefresh);
+
+    if (token && token.accessToken) {
+      // The token object has an accessToken property
+      // as per the FirebaseAuthTokenData interface.
+      tokenDisplay.textContent = token.accessToken;
+    } else {
+      tokenDisplay.textContent = 'No token available.';
+    }
+  } catch (error) {
+    console.error('Error getting token:', error);
+    tokenDisplay.textContent = 'Error getting token. See console for details.';
+  }
+}
+
 function validateRegionalAuth() {
   if (!regionalAuth) {
     onAuthError({
@@ -2618,6 +2643,13 @@ function initApp() {
   $('#set-successful-handler-btn').click(onSetSuccessfulHandlerClick);
   $('#set-failure-handler-btn').click(onSetFailureHandlerClick);
   $('#clear-regional-auth-id-btn').click(clearRegionalAuthInstance);
+
+  $('#interop-getToken-btn').click(() => {
+    getFirebaseTokenInterop(false);
+  });
+  $('#interop-getToken-forceRefresh-btn').click(() => {
+    getFirebaseTokenInterop(true);
+  });
 }
 
 $(initApp);