我刚刚注意到我的应用程序的存储空间在过去几周内几乎达到了 5GB 的免费使用限制。更详细地检查后,似乎这是由“工件”存储桶引起的。
我看到了这个 SO question,它说“工件”存储桶与 Node 10 环境有关。
我确实在一个月前搬到了 Node 10,但在发现日志不再在 Firestore 功能控制台中构建后,几天后我又恢复到 Node 8,从那时起只使用 Node 8。
但是我可以看到“工件”存储每周增加约 800Mb,这让我至少担心(请查看下面的屏幕截图)
我认为这与 Firestore 功能部署有关(或不是?),但这真的是预期的吗?我可以安全地清理这些工件吗?
对我来说,它在短短几周内急剧增加,这对我来说很奇怪,而以前我使用函数几年,从来没有遇到过这样的问题。
感谢有关如何在这种情况下安全处理存储大小并将其消耗保持在最低限度的任何建议。
我也在使用pubsub.schedule
函数以防它在这里很重要。
我还注意到“神器”的带宽出乎意料地飙升,我猜这也有成本影响,我很感激任何有关尽量减少此类峰值的可能方法的意见(22.5GB 中约有 22GB 来自“神器”存储桶):
如何将服务器端 gtag 的转化报告回 Google 广告?
我当前的设置是使用唯一的 userId(在我的数据库中生成,并且对于每个用户来说都是唯一的)将事件从 gtag 报告回 google Analytics 4
let data = {
client_id: this.getDeviceId(),
user_id: this.userId,
events: [{
name: eventName,
params: props,
}]
}
... then send it as payload to the tracking url to the ga4 tracking url:
https://www.google-analytics.com/mp/collect?measurement_id=...&api_secret=...
Run Code Online (Sandbox Code Playgroud)
现在,我启动了 Google 广告,并希望将购买和续订报告为转化。
因此,我将目标事件从 GA4 导入到 Google Ads 作为线下事件。
但据我了解,为了正确地将用户链接回谷歌广告,我还需要在报告事件/转化时在gtag中传递gclid,但如何做到这一点?
我应该将 gclid 添加为数据中的属性吗?它在任何地方都有记录吗?
我使用以下文档链接在服务器上设置 gtag 跟踪: https: //developers.google.com/analytics/devguides/collection/protocol/ga4/user-properties ?client_type=gtag
我正在为我的一个应用程序使用 firebase,并希望添加功能,让我的用户可以自定义域名并使用自己的域名。
因此,他们可以将我的应用程序的“example.com/bla”更新为“mydomain.com/bla”,作为高级品牌功能(白色标签)。
是否可以使用 firebase 托管/功能,如果可以,如何实现?
我正在寻找的示例之一可以在这里找到: https://www.surveyhero.com/white-label-surveys ?ref=features-table
在 Blaze 计划中,关于 Firestore 触发器的成本影响是什么?
我是否正确地假设触发器本身不会从数据库中生成任何额外的读取?
我仍然有一种感觉,从 CPM/内存消耗的角度来看,触发器不是免费的。从这个角度来看,我是否正确理解 firestore 触发器可以像任何其他 firebase 函数一样对待?
在 firestore v8 (web sdk) 中我是这样做的,如下所示:
firestore.ref().collection("genId").doc().id
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚 v9 的正确语法,因为collection
不再有doc()
方法了。
非常感谢任何建议
随着functions.https.onRequest(app);
有可能使用表达的时候了。
我想知道是否可以以functions.https.onCall(...)
相同的方式与 express 一起使用?
onCall(...)
似乎有不同的签名,但也许还有一种方法可以在使用onCall(...)
函数时继续使用 express ?
经过几天的挣扎,我来到了这里。我正在尝试根据本教程将自定义 per-vertex vec3 属性传递给自定义着色器。本教程介绍了如何传递实际工作正常的自定义制服。但是,当我尝试修改代码以传递我的自定义 per-vertex 属性时,似乎没有任何内容传输到顶点着色器,我无法弄清楚如何使其工作。
到目前为止,我已经完成了以下工作:
我已经用 modelBuilder.createBox() 创建了几个盒子(所以我确定每个模型都有 24 个顶点)
然后我生成了一个包含实际属性数据的 FloatBuffer,如下所示:
int[] data = new int[]{x1, y1, z1, x1, y1, z1, ...}
ByteBuffer byteBuffer = ByteBuffer.allocateDirect(data.length * 4);
byteBuffer.order(ByteOrder.nativeOrder());
mAttributeBuffer = byteBuffer.asFloatBuffer();
mAttributeBuffer.put(data);
mAttributeBuffer.position(0);
Run Code Online (Sandbox Code Playgroud)
然后我正在初始化相应的属性位置变量(成功,a_coord >= 0):
a_coord = program.getAttributeLocation("a_coord");
Run Code Online (Sandbox Code Playgroud)
在自定义着色器的render(Renderable)
方法中的libgdx 端之后,我将缓冲区传递给 OpenGL,如下所示:
program.setVertexAttribute(a_coord, 3, Gdx.gl20.GL_FLOAT, false, 0, mAttributeBuffer);
Run Code Online (Sandbox Code Playgroud)
我的自定义顶点着色器如下:
attribute vec3 a_position;
attribute vec3 a_normal;
attribute vec2 a_texCoord0;
uniform mat4 u_worldTrans;
uniform mat4 u_projTrans;
varying vec2 v_texCoord0;
//my custom attribute
attribute vec2 …
Run Code Online (Sandbox Code Playgroud) 问题:当我使用 oauth2(从我的服务器启动)对用户进行身份验证时,如何从 oauth2 回调中获取初始用户 ID,以便将其映射回服务器上的初始身份验证请求?
上下文:
我正在开发一个网络应用程序,我需要要求用户授予对其谷歌日历的访问权限。
考虑 oauth 流程:
Web 客户端(向其发送请求)->后端(向其发送 oauth 请求)-> google(授予访问权限)->后端(在此步骤中我如何知道用户存储 refresh_token?)
以下是更多详细信息默认流程:
Run Code Online (Sandbox Code Playgroud)const authUrl = new google.auth.OAuth2(clientId, secret, redirectUrl)).generateAuthUrl(options) res.redirect(authUrl)
那么我如何从“回调”中理解这仍然是启动流程的同一个用户?
我有一个 Firebase 应用程序,我正在集成 Zapier。他们要求用户通过他们的表单对我的应用程序进行身份验证。
它的工作方式是 Zapier 将向用户请求电子邮件和密码,并将其发送到我的端点以获取访问令牌并将其用于任何进一步的请求。
我不太清楚如何从服务器(节点 js)上的用户名和密码生成访问令牌,因为所有身份验证方法都存在于客户端 SDK 中。
到目前为止,我希望使用提供的电子邮件/密码对用户进行身份验证,从他们生成自定义令牌uid
并将其发送回 Zapier。但我不能这样做,因为signInWithEmailAndPassword
服务器 SDK 中没有或类似的方法。
我知道我可以通过电子邮件获取用户,但是我如何检查密码,因为相应的方法再次仅在客户端 SDK 中可用?
到目前为止,我有以下代码:
const rp = require('request-promise');
app.post('/api/integrations/zapier/auth', (req, res) => {
let data = req.body
admin.auth().signInWithEmailAndPassword(data.email, data.password) // <- this method doesn't exist in the server sdk
.then(response => admin.auth().createCustomToken(response.user.id))
.then(customToken => rp({
url: `https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyCustomToken?key=${config.apiKey}`,
method: 'POST',
body: {
token: customToken,
returnSecureToken: true
},
json: true,
}))
.then(idToken => {
res.send({
accessToken: idToken,
filed: data.email
});
}).catch(error => res.status(500).send(error)); …
Run Code Online (Sandbox Code Playgroud) firebase ×6
javascript ×2
express ×1
google-oauth ×1
gtag.js ×1
libgdx ×1
node.js ×1
shader ×1