使用 Identity Platform 為多個用戶群建立登入頁面
本頁說明如何使用 FirebaseUI (一系列預先建構的開放原始碼 UI 元件) 和用戶端 SDK,為 Identity Platform 中的多個租戶建構登入頁面。
事前準備
取得元件
您可以將 UI 指令碼、Client SDK 和 CSS 檔案新增至網頁的 <head>
元素,直接從 CDN 擷取這些檔案:
<script src="https://www.gstatic.com/firebasejs/x.x.x/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/x.x.x/firebase-auth.js"></script>
<script src="https://cdn.firebase.com/libs/firebaseui/x.x.x/firebaseui.js"></script>
<link rel="stylesheet" href="https://cdn.firebase.com/libs/firebaseui/x.x.x/firebaseui.css" />
或者,您可以使用 npm
安裝模組,然後將其參照為 ES6 匯入項目:
npm install firebase --save && \
npm install firebaseui --save
// Import Firebase JS SDK.
import * as firebase from "firebase/app";
import "firebase/auth";
import * as firebaseui from 'firebaseui'
建構用於選取租戶的 UI
FirebaseUI 只會處理登入流程,您必須自行建構使用者介面,供使用者選取要登入的租戶。
如要使用兩個按鈕建構基本租戶選取頁面,請按照下列步驟操作:
建立兩個租戶選取元素。
<div id="tenant-selection-buttons"> <button id="tenant1-select-button" data-val="tenantId1">Display name of Tenant 1</button> <button id="tenant2-select-button" data-val="tenantId2">Display name of Tenant 2</button> </div>
為 FirebaseUI 建立容器元素。
<div id="firebaseui-auth-container"></div>
為每個租戶建立設定。
<script> var uiConfigs = { 'TENANT_ID1': { 'signInOptions': [firebase.auth.EmailAuthProvider.PROVIDER_ID], 'credentialHelper': 'none', 'signInFlow': 'popup', 'callbacks': { 'signInSuccessWithAuthResult': function(authResult, redirectUrl) { // The sign in success callback. return false; } }, // tosUrl and privacyPolicyUrl accept either url string or a callback // function. // Terms of service url/callback. tosUrl: '[YOUR_TOS_URL]', // Privacy policy url/callback. privacyPolicyUrl: function() { window.location.assign('[YOUR_PRIVACY_POLICY_URL]'); } }, 'TENANT_ID2': { 'signInOptions': [firebase.auth.GoogleAuthProvider.PROVIDER_ID], 'credentialHelper': 'none', 'signInFlow': 'popup', 'callbacks': { 'signInSuccessWithAuthResult': function(authResult, redirectUrl) { // The sign in success callback. return false; } }, // tosUrl and privacyPolicyUrl accept either url string or a callback // function. // Terms of service url/callback. tosUrl: '[YOUR_TOS_URL]', // Privacy policy url/callback. privacyPolicyUrl: function() { window.location.assign('[YOUR_PRIVACY_POLICY_URL]'); } } }; </script>
如要使用 FirebaseUI 算繪登入元件,請新增租戶選取點擊處理常式。在算繪 UI 元件前,請在
Auth
執行個體上設定房客 ID。<script> var ui = new firebaseui.auth.AuthUI(firebase.auth()); tenantSelectionButton.addEventListener('click', (e) => { var tenantId = e.target.getAttribute('data-val'); firebase.auth().tenantId = tenantId; ui.reset(); ui.start('#firebaseui-auth-container', uiConfigs[tenantId]); }); </script>
啟動應用程式。畫面上會顯示登入畫面和兩個房客按鈕。
您也可以建立多頁工作流程。
舉例來說,您可以建立工作流程,讓使用者在第一頁輸入電子郵件地址,然後在下一頁選取租戶。此外,您也可以為每個租戶代管個別的登入頁面。如要這麼做,您必須從網址剖析房客 ID,然後在 Auth
物件上設定該 ID。