使用Javascript的Firebase身份验证

问题描述:

我们正在使用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 –

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