Tag: firebase

守护程序不会在browser.end()后终止

我启动启动我的本地服务器的subprocess后运行Nightwatch。 Nightwatch运行testing,它们成功完成,浏览器窗口全部closures,但是在打印“确定”10个总断言通过之后, nightwatch进程继续运行。 我认为这可能与我如何看nightwatch过程中的事件有关,但据我所知,我正在观看所有可能表明守夜人正在退出的事件。 runner.js shutdown()方法永远不会被调用。 testing结束后,如何让Nightwatch终止? 更新 如果我删除sign-in.js中的最后一个testing,则Nightwatch按预期退出。 runner.js import spawn from 'cross-spawn' // 1. start the dev server using production config process.env.NODE_ENV = 'testing' let servers function shutdown (result) { console.log('HERE', result) try { // Passing a negative PID to kill will terminate all child processes, not just the parent if (servers) process.kill(-servers.pid) […]

通过Node.js传递从承诺到承诺的价值

我试图传递一个对象,我使用Firebase承诺一个一个地构build。 如果有更好的方法逐步构build对象,我并不需要沿承诺链传递对象。 这是我的代码: var queue = new Queue(productUpdateQueue, function(data, progress, resolve, reject) { var incomingUpdateData = data; var receiptID = incomingUpdateData.receiptID; var userID = incomingUpdateData.userID; var oldProductID = incomingUpdateData.oldProductID; var newProductID = incomingUpdateData.newProductID; var newReceipt = incomingUpdateData.newReceipt; var postID = ""; var updateObject = {}; updateObject['usersPrivate/'+userID+'/receipts/'+receiptID+'/items/'+oldProductID] = null; updateObject['usersPrivate/'+userID+'/receipts/'+receiptID+'/items/'+newProductID] = newReceipt; clicks.child('VigLink').orderByChild('item').equalTo(oldProductID).once('value', function(cuidSnapshot) { return […]

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

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

如何在创build用户之前validation电子邮件?

情况: 我正尝试将validation电子邮件发送给刚刚注册的用户。 除非他validation他的电子邮件地址,否则他的帐户不会被创build。 我的代码: var userAuth = firebase.auth().currentUser; userAuth.sendEmailVerification().then(function() { req.flash('success_msg', 'Please verify your email address. You have 60 seconds'); setTimeout(function(){ if(userAuth.emailVerified) { firebase.auth().createUserWithEmailAndPassword(email, password).then(userData => { var user = { email: email, username: username, } firebase.database().ref('users/'+userData.uid.toString()).set(user); req.flash('success_msg', 'You have registered and logged in.'); res.redirect('…'); }).catch(error => { var errorCode = error.code; var errorMessage = […]

用于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" } 有效载荷: […]

Google Cloud函数中APIdevise的最佳方法?

最终的期望结果是资源利用率较低的性能更高的系统。 我想连接一个SQL数据库云function,并承载一个pf api的。 这里有两个select… 备选scheme:我们将每个API作为独立的云function托pipe。 const functions = require('firebase-functions'); exports.helloFunc1 = functions.https.onRequest(function (request, response){ response.send("Hello from Func1!"); }); exports.helloFunc2 = functions.https.onRequest(function (request, response){ response.send("Hello from Func2!"); }); 备选scheme二:我们主持一个具有内部路由的云端function。 const functions = require('firebase-functions'); const express = require('express'); const router = new express.Router(); var app = express(); var helloFunc1 = function (request, response){ // After some DB […]

从Firebasefunction(节点)上传时,Firebase存储文件types未设置

通过Firebase函数(节点)将转换后的图像(.jpg)上传到谷歌存储时,我在元数据选项中设置了contentType。 return bucket.file(filePath).download({destination: tempFilePath}) .then(() => { console.log('Image downloaded locally to', tempFilePath); // Generate a thumbnail using ImageMagick. return spawn('convert', [tempFilePath, '-thumbnail', '200×200>', tempFilePath]) }) .then(() => { console.log('Thumbnail created at', tempFilePath); // Add a 'thumb_' prefix to thumbnails file name. That's where we'll upload the thumbnail. const thumbFilePath = filePath.replace(/(\/)?([^\/]*)$/, `$1thumb_$2`); // Uploading the […]

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服务器与客户端进行通信,并在必要时提供数据和文件。

如何从Cloud Function获取Firebase项目名称或ID

我正在使用云function,并希望从我的一个Javascript服务器文件中获取项目名称。 我知道价值存储在.firebaserc,但我不认为该文件在服务器上可用,对不对? 我想要做这样的事情: const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.getProjectName(); // or getProjectID() 要么 functions.getProjectName();

使用nodejs更新firebase中的数据

我有以下问题,我每分钟发送数据到一个在nodejs中运行的cron选项卡中的firebase数据库,我只在发生更改时发送信息,但是当没有更改时,数据库将继续接收信息。是我的代码 let admin = require('firebase-admin'); let prev_res = {}; admin.initializeApp({ credential: admin.credential.cert(serviceAccount), databaseURL: 'mydburl' }); cron.schedule('* * * * *', function(){ let connection = mysql.createConnection({ host : 'myhost', user : 'myuser', password : 'mypass', database : 'mydb' }); connection.query("MY QUERY", function(err, rows, fields){ if (!err){ if(JSON.stringify(rows) != JSON.stringify(prev_res)){ let db = admin.database(); let ref = […]