Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用Firebase的NodeJS身份验证_Node.js_Firebase_Firebase Authentication_Firebase Admin - Fatal编程技术网

Node.js 使用Firebase的NodeJS身份验证

Node.js 使用Firebase的NodeJS身份验证,node.js,firebase,firebase-authentication,firebase-admin,Node.js,Firebase,Firebase Authentication,Firebase Admin,我想通过NodeJS与Firebase进行身份验证并保持会话。客户端无法直接与Firebase通信 简言之: 客户端(浏览器)节点(firebase管理员)firebase 我在NodeJS中创建了Firebase客户端,然后使用登录方法: var firebaseClient = require('firebase'); firebaseClient.initializeApp(config) firebaseClient.auth().signInWithEmailAndPassword(r

我想通过NodeJS与Firebase进行身份验证并保持会话。客户端无法直接与Firebase通信

简言之:

客户端(浏览器)节点(firebase管理员)firebase

我在NodeJS中创建了Firebase客户端,然后使用登录方法:

var firebaseClient = require('firebase');
firebaseClient.initializeApp(config)
firebaseClient.auth().signInWithEmailAndPassword(req.body.email, req.body.password).catch(function(error){
    console.log(error);
})
然后我创建了路由来检查经过身份验证的用户:

app.get('/check',function(req,res){
    var user = firebaseClient.auth().currentUser
    console.log(user)
})
此方法仅允许我保留1个以前记录的用户


我想使用firebase admin,但我不知道如何保持会话和验证用户

您可以使用客户端SDK在各自的设备/浏览器上验证客户端,并让他们向使用firebase admin(admin SDK)编写的后端服务发送ID令牌。admin SDK提供了验证客户端发送的ID令牌的方法:

查看
passport
,作为管理会话的一种方法。我确信有一个包可以使用firebase管理firebase身份验证,firebase已经为您制作好了,比如我使用的angular fire。您可以直接将客户端(浏览器)与firebase通信。我没有找到所描述问题的解决方案。@KarolBilicki您找到解决方案了吗?不幸的是,没有找到,但这使得用户依赖于客户端sdk。我正在尝试创建一个完整的REST API服务,但没有找到仅通过云函数登录和注销的方法:(这是意料之中的,因为Admin SDK旨在扩展和补充客户端SDK的功能。但是,现在有了API,但您仍然需要从客户端登录获取ID令牌。您最好将其与在服务器中使用客户端SDK相结合。感谢您的回复:)似乎我找到了另一种选择。我正在尝试使用Google Identity Toolkit的REST服务从云功能获取IdToken。您认为这是一种可能的解决方案吗?您是使用自定义令牌还是用户名和密码获取的?如果是后者,我注意到您获取的ID令牌略有不同。我使用的是用户名/Password登录。看起来我成功使用Rest身份验证。但是,我只有一个问题。它不支持注销。我需要忽略它并通过清除客户端上的accessTokens来处理吗?