0

我們正在使用Firebase構建一個Web應用程序。我們正在使用Firebase託管來託管靜態文件,如CSS,圖像和JavaScript。我們也在使用Firebase功能來使Web應用程序動態化。使用Javascript的Firebase身份驗證

const app = express(); 
... 
app.use(express.static(__dirname + '/public')); 

app.get('/', (req,res) => { 
    res.render('index'); 
}); 

我在公用文件夾中有一個signIn.js,並託管在Firebase託管上。當我嘗試訪問signin.js中的"firebase.auth().signInWithPhoneNumber(phoneNumber, appVerifier) {}"函數時,出現「Firebase」未找到的錯誤。

我想使用Firebase在用戶手機上發送OTP。現在我很困惑我們是否應該在宿主JS文件的客戶端處理它,或者我們必須在server.js的服務器端處理它。

另外,我怎麼能調用託管在Firebase託管的靜態js文件的firebase函數託管的server.js文件中的函數?

+0

https://github.com/rhroyston/firebase-v4-auth是最新的。 ppl似乎喜歡這個https://github.com/rhroyston/firebase-auth –

回答

0

firebase.auth().signInWithPhoneNumber只是客戶端。你也需要渲染一個不可見的reCAPTCHA,它只能在客戶端完成。如果您使用的是Firebase Admin SDK,則可以使用電話號碼創建用戶或更新現有用戶,但假設您通過自己的方式驗證了該號碼。

如果您需要提供通過火力地堡功能的一些HTTP終端的認證接入,你可以在手機認證用戶的火力地堡ID令牌發送到端點(你可以得到它通過currentUser.getIdToken()在客戶端上),並通過驗證Admin SDK verifyIdToken(idToken)

+0

我正在使用Firebase手機身份驗證。現在,我可以在客戶端的用戶手機上發送和驗證OTP。但我擔心的是我必須在我的JavaScript文件中添加firebase API密鑰,authDomain,databaseURL來配置Firebase。現在用戶可以很容易地獲得這些價值,並可以破壞安全。 @bojeil –

+0

Web中的Firebase身份驗證使用reCAPTCHA來驗證頁面域是否與您列入白名單的域名列表相匹配,並且還提供反濫用。此外,您的應用程序域將附加到SMS消息。所有這些都將防止攻擊者冒充您的應用程序。 – bojeil