Articles of firebase authentication

Firebase set()承诺停留在挂起状态

我正在尝试简单地写入Firebase数据库,如下所示: return app.register( email, password ).then( f => { return app.login( email, password ) } ).then( f => { return app.currentUser() } ).then( user => { return app.firebase.db().ref( `users/${user.uid}` ).set( {color: 'red'} ) } ).then( f => { console.log( "This never triggers" ) } ) 其中app.register是: ( firebase, email, password ) => firebase.auth().createUserWithEmailAndPassword( email, password […]

如何检查服务器上的客户端进行身份validation?

情况: 目前,我通过URL传递UID到服务器。 然后我使用UID检查数据库中是否存在该UID: 码: router.get("/profile/:uid", function(req, res, next){ var uid = req.params.uid; var userRef = admin.database().ref("users/"+uid); userRef.once('value', function(snapshot){ if (snapshot != null) { 问题: 这意味着任何人都可以访问任何人的个人资料通过构build一个url并将其粘贴到search栏中,并包括该用户的UID。 题: 如何检查用户是否在服务器上进行了身份validation,而没有出现这种安全漏洞?

如何在NodeJS中创build一个新的Firebase Admin SDK服务器以与LinkedIn进行身份validation?

我从来没有使用NodeJS,我需要创build一个Firebase自定义令牌,所以我可以通过LinkedIn向我的iOS应用程序进行身份validation。 根据Firebase文档,我必须创build一个新的Firebase Admin SDK服务器。 我遵循NodeJS的指示,但是没有很好的解释。 我不明白如何与我的应用程序通信到服务器,我找不到有关它的文档。 有人做过这个吗? 如果是这样,我会感谢您的帮助。 谢谢。

firebase-admin auth错误,同时调用`getUser`,但在调用verifyToken时工作正常

在服务器端使用firebase-admin时,我需要从Firebase身份validation中获取用户数据。 但是我发现,如果我使用firebase提供的jwt令牌,我无法从解码令牌获取电子邮件或其他提供者的数据。 (很确定我已经正确添加了特定的作用域。) 然后我转向使用Firebase的pipe理API来从Firebase的身份validation获取用户数据。 代码如下所示: import * as admin from 'firebase-admin' const auth = admin.auth() auth.verifyIdToken(idToken) .then(decodedToken => decodedToken.user_id) .then(uid => { auth.getUser(user_id) .then((userRecord) => { console.log("Successfully fetched user data:", userRecord.json(); }) .catch(function(error) { console.log("Error fetching user data:", error); }); }) 然后我得到一个错误: Error fetching user data: Error: error:0906D06C:PEM routines:PEM_read_bio:no start line at Error (native) at […]

用于Firebase Admin SDK的Node.js身份validation服务器 – JWTvalidation问题

我正在开发一个项目,我们将在微服务架构中使用不同的服务,同时我们也希望使用一些Firebase服务。 我正在开发一个auth服务器,这个服务器将用于在Firebase以及其他API项目中使用自定义JWT。 我们希望使用Firebase Auth SDK轻松地与FB,Google,Twitter等进行整合,但是我们需要用更多的数据来丰富用户的令牌。 因此,我的思考过程是创build一个使用Firebase Admin SDK的Node.JS auth服务器来执行此操作。 stream程如下: 用户使用客户端上的collections提供程序login 如果login成功,用户将从Firebase收到JWT。 这被发送到auth服务器进行validation 如果auth服务器可以使用admin SDKvalidation令牌,则创build一个新的自定义令牌,并添加更多数据,然后将此新自定义令牌返回给客户端 让客户端使用新的自定义令牌重新进行身份validation,并将其用于与Firebase以及我们的其他API项目(主要在.NET Core中)进行通信。 步骤1-3工作正常。 尝试validation其他服务上的自定义令牌时出现问题 。 TL; DR :有两个问题: 在validation使用Firebase Node.JS Admin SDK发布的自定义令牌时,我应该使用什么作为公钥? 从Google公开的JWK中提取的关键字,还是从用于签名的私钥中提取的密钥? 在JWK方法的情况下,我应该如何构build一个kid头自定义令牌? 首先,我怀疑validation它的正确方法。 (请原谅,我没有那么有经验的创buildOAuthstream。)使用的algorithm是RS256,所以我应该能够使用公钥validation令牌。 正如我所看到的,有两种方法来获得这个关键: 从私钥中提取公钥并使用它进行validation。 我可以在auth服务器上的testingterminal上成功地进行validation,但是我觉得这是不正确的做法 另一种更正确的方法是使用令牌中的值在我的项目的Google的“/.well-known/openid-configuration/”端点上查找JWK,即 https://securetoken.google.com/[PROJECT ID] /。well-known / openid-configuration 检索正确的kid (密钥ID)的指数和模数,并从这些中创build公钥。 从admin SDK生成的令牌 admin.auth().createCustomToken(uid, additionalClaims).then(function(customToken) 一些自定义声明看起来像这样: 标题: { "alg": "RS256", "typ": "JWT" } 有效载荷: […]

Nodejs Firebase和Angular4authentication

我有一个客户端应用程序,用angular4编写,与firebase服务器通信。 目前,我正在尝试将一个nodejs与firebase集成,以便与客户端应用程序进行通信。 Firebase <—->客户端(Angular4)<—-> NodeJs(firebase-admin)<—-> Firebase 我已经设置了一个fire-adminconfiguration: var admin = require("firebase-admin"); var serviceAccount = require("./server/myfile.json"); admin.initializeApp({ credential: admin.credential.cert(serviceAccount), databaseURL: "https://mydb.firebaseio.com" }); 并能够像这样检索数据: var db = admin.database(); var ref = db.ref("messages"); ref.once("value", function(snapshot) { console.log(snapshot.val()); }); 但是,我怎么能检查NodeJS服务器是否在客户端应用程序中的用户已经login ? 我需要这个NodeJS服务器与客户端进行通信,并在必要时提供数据和文件。

有没有办法通过我的Node.js服务器发送带有Firebase Admin SDK的validation邮件?

有没有办法从我的服务器发送电子邮件validation电子邮件? 这是如何在客户端上完成的: authData.sendEmailVerification().then(function() { 有没有办法在服务器上做到这一点?

在助手应用程序的Firebase函数中获取Node.js中的Google用户标识

我正在开始使用Google云端平台。 我正在开发一个Android应用程序,收集信息并将其存储在Firebase应用程序中。 这个想法是,谷歌助理function可以查询这些信息并将其读回,例如 OK Google,和Simons App交谈,告诉我上次XYZ完成的时间 但是,我得到的问题是让这个多用户。 我有Android应用程序收集数据并将其放入云中。 我正在使用FirebaseUser并在Android应用程序中使用getUid()来获取唯一的id,它是一个28个字符的string,如uVHkia8RRgWD8GGPVvW4AUDUK2 。 我已经在Google上设置了Actions,通过Web Fulfillment将它吸引到API.AI中,并获得了Node.js在Firebase函数中的工作。 不幸的是,我回来的UserID看起来更像: HTge48H0CF2FC5jJQCigFBc-UCQ 问题是这个UserID和我从Filebase User得到的UserUID不一样。 我在用着 let ApiAiApp = require('actions-on-google').ApiAiApp; const app = new ApiAiApp({request: request, response: response}); 和 const userId = app.getUser().userId; 我错过了什么? 我看到OAuth2,帐户链接等参考。我不完全确定在这一点上做什么。 我现在需要做的就是从FirebaseUser.getUID()获取User UID ,以便在Firebase数据库中查看数据。 我认为其余的应该是直截了当的。 从助理链接到Firebase有大量的文档,但在实际身份validation方面很less。 到目前为止,我还没有设置stream程,如授权码stream程,隐式stream程,或者根据API.AI和Fulfillment选项设置用户名/密码。 坦率地说,林不知道什么需要去哪里在这一点上。

Firebasepipe理员身份validation令牌被吊销

我试图实现一个node.js服务器来侦听我的firebase数据库中的更改。 这是我的代码来初始化服务器: var admin = require('firebase-admin'); var serviceAccount = require('./SERVICE-ACCOUNT.json'); admin.initializeApp({ credential: admin.credential.cert(serviceAccount), databaseURL: "https://APP-NAME.firebaseio.com" }); var db = admin.database(); admin.database.enableLogging(true); var convRef = db.ref('conversations'); convRef.once('value', function(snapshot) { console.log("VALUE: " + snapshot.val()); }, function(error) { console.log("ERROR: " + error.code); }); 启用debugging后,我收到错误: p:0: Listen called for /conversations default p:0: Making a connection attempt p:0: Auth token […]

在部署Firebase项目时,错误显示“找不到模块firebase-functions”

当我试图部署一个firebase项目时,它会在npm控制台中显示一条错误信息'can not find module firebase-functions'。我所做的步骤(节点命令)是: npm install -g firebase-tools firebaselogin firebase初始化 最后是我困扰的地方 4. firebase部署 请帮帮我。