标签: firebase-admin

部署云功能错误后:无法刷新访问令牌.

我已经使用Firebase云功能进行了一段时间的实验,今天我对我的index.json文件进行了一些小改动(在要设置的文档中添加了一个字段),在Firebase控制台上部署>功能>日志我已经得到了这个奇怪的错误:

Auth error:Error: Could not refresh access token.
Run Code Online (Sandbox Code Playgroud)

和:

Error: 16 UNAUTHENTICATED: Getting metadata from plugin failed with error: Could not refresh access token.
at new createStatusError (/user_code/node_modules/firebase-admin/node_modules/grpc/src/client.js:65:15)
at /user_code/node_modules/firebase-admin/node_modules/grpc/src/client.js:568:15
Run Code Online (Sandbox Code Playgroud)

这是我尝试但没有奏效的一系列事项:

  1. 恢复index.json中的更改
  2. 部署每个功能(使问题更严重,现在我的云功能都没有工作)
  3. 为@ google-cloud/storage生成一个新的keyFilename
  4. npm update firebase-admin
  5. (重新引导)

firebase deploy上次成功的最后一次是昨晚.我在linux上.

谢谢.

node.js firebase google-cloud-functions firebase-admin

10
推荐指数
1
解决办法
1318
查看次数

Firebase Firestore增量FieldValue不增量

所以我已经阅读了所有有关在 Firestore 数据库中增加计数器的文档。我有这个代码

const admin = require("firebase-admin");
const db = admin.firestore();
...
db
.collection("settings")
.doc("totalUsers")
.set({
count: firebase.firestore.FieldValue.increment(1),
});
Run Code Online (Sandbox Code Playgroud)

我只是根本不增加计数器。没有错误没有日志什么也没有。在我的 Firestore 中,我有一个集合settings和一个文档totalUsers,其属性count是数字类型且等于 1。

难道我做错了什么?我错过了什么吗?任何帮助表示赞赏!

node.js firebase firebase-admin google-cloud-firestore

10
推荐指数
2
解决办法
4868
查看次数

NodeJS + Google Login + Firebase 函数导致解码 firebase 会话 cookie 失败

我需要 Google 登录才能使用 Firebase 应用程序,为了完成此操作,我使用了多个来源:

  • auth-sessions提供了一个很好的开箱即用的 NodeJS + Firebase + Google Login 示例。
  • 管理 firebase 会话提供了一个示例 NodeJS 函数(不是整个工作解决方案)来与 Firebase 函数配合使用。

问题:

当尝试在生产环境中登录 Google 帐户时,执行下面的代码验证函数时会出现以下错误:

admin
    .auth()
    .verifySessionCookie(sessionCookie, true /** checkRevoked */)
    .then((decodedClaims) => {
        log("Decode success");

        // inbetween checks

        log("Successfully decoded and authenticated");
        next();
    })
    .catch((error) => {
        log("Error authenticating");          < ---- THIS IS THE PROBLEM
    ...
    });
Run Code Online (Sandbox Code Playgroud)

此错误仅在生产(即部署到 Firebase)时发生。当使用仅模拟托管和功能的 firebase 模拟器进行本地测试时(auth、firestore、数据库等都是生产环境),登录成功。部署时,登录失败并出现以下错误。

错误:

解码 Firebase 会话 cookie 失败。确保您传递了代表会话 cookie 的整个字符串 JWT。有关如何检索会话 cookie 的详细信息,请参阅https://firebase.google.com/docs/auth/admin/manage-cookies 。


更多细节:

以下是所执行的步骤/操作的高级概述

所执行操作的步骤概述 …

node.js firebase-authentication google-cloud-functions firebase-admin

10
推荐指数
1
解决办法
916
查看次数

如何验证用户当前密码?

所以,也许我在文档的某个地方错过了这个,但我找不到任何类似的东西.

我的用户不必输入他们当前的密码才能创建一个新密码.根据我的理解,如果用户通过身份验证,他可以在不提供当前密码的情况下更新密码.

即使这可能有点安全,我宁愿让他输入旧的,以防止人们从家庭成员那里继续进行已经过身份验证的会话并改变pw.

有没有办法做到这一点?

(我使用Admin SDK没有问题,因为我已经为这些事情设置了服务器)

firebase firebase-authentication firebase-admin

9
推荐指数
1
解决办法
6909
查看次数

firebase admin SDK创建用户并发送验证邮件

在使用firebase admin SDK创建用户后,如何发送验证电子邮件?我想要结合起来createUser function,sendEmailVerification function 有人可以指出一个暗示或答案吗?谢谢

更新:

用户创建由已在应用程序中登录的管理员用户完成,因此管理员用户只是在仪表板上创建用户.这与注册方法完全不同.

更新2:

我试图按照bojeil的回答,我仍然坚持用户使用自定义令牌登录的步骤.它与我当前的管理员用户会话发生冲突,管理员用户被踢出,而新用户已登录,即使我退出新用户,管理员用户仍然不在,需要登录才能重新登录该应用程序.

获取自定义令牌后,这是我在应用程序中的代码:

$http.post('/.custom-token', {uid: $scope.data.data.uid})
        .then(function (response) {
            console.log("custom token here:", response.data.token);
            firebase.auth().signInWithCustomToken(response.data.token)
                .then(function (firebaseUser) {
                    firebaseUser.sendEmailVerification();
                    firebase.auth().signOut().then(function() {
                        // Sign-out successful.
                        console.log("signed out success");
                    }, function(error) {
                        // An error happened.
                    });
                })

                .catch(function(error) {
                    // Handle Errors here.
                    var errorCode = error.code;
                    var errorMessage = error.message;
                    // ...
                });

        });
Run Code Online (Sandbox Code Playgroud)

所以,我获得令牌,登录新用户,发送电子邮件验证链接,然后注销新用户.但我正在执行此操作的管理员用户也会退出.我在这里想念的是什么?

angularjs firebase firebase-authentication firebase-admin

9
推荐指数
2
解决办法
4726
查看次数

Firebase消息传递/不匹配的凭证

我正在尝试将通知发送到具有Firebase的特定设备,但出现以下错误:

{“ r”:{“结果”:[{“错误”:{“代码”:“消息/不匹配的凭据”,“消息”:“用于验证此SDK的凭据无权将消息发送到与提供的注册令牌相对应的设备。请确保凭据和注册令牌都属于同一Firebase项目。“}}],” canonicalRegistrationTokenCount“:0,” failureCount“:1,” successCount“:0,” multicastId“: 5165415028752234000}}

我不确定是什么原因造成的,我正在使用与项目关联的服务帐户以及正确的设备ID。

任何帮助将是巨大的,谢谢!

push-notification firebase firebase-cloud-messaging firebase-admin

9
推荐指数
3
解决办法
3985
查看次数

如何创建正确的 FIREBASE_CONFIG 环境变量?

我试图通过我的节点/firebase 应用程序写入 CloudFirestore,但发现文档有点不清楚。当我编译我的应用程序时,终端状态:

警告,缺少 FIREBASE_CONFIG 环境变量。初始化 firebase-admin 将失败

firebase 文档说我应该运行:

firebase 函数:config:set unknownthusarbitraryservicename.key="Unknown, 因此任意 API Key" unknownthusarbitraryservicename.id="来自生成的私钥的 ClientID"

我已经生成了一个“私钥”并发现了我的“client_id”,但是:

  1. 在哪里可以找到我的服务名称?我假设“someservice”是任意的,因为我没有看到控制台的服务帐户选项卡中列出的服务。目前,我从“generated_private_key.json”文件中选择了我的 project_id。
  2. 我在哪里可以找到我的 API 密钥?“generated_private_key.json”中没有列出“API Key”。我假设这不是任意的,但是有太多的未知数让我无法自信地继续。

我最终试图完成的一个例子:

    const admin = require('firebase-admin');
    const db = admin.firestore();

    admin.initializeApp({
        credential: admin.credential.cert(isThisMyServiceName),
        databaseURL: "https://my-databaseURL.firebaseio.com"
    });

    app.post('/', (req, res) => {
        var data = {
            name: 'Los Angeles',
            state: 'CA',
            country: 'USA'
        };

        var setDoc = db.collection('cities').doc('LA').set(data);
    }
Run Code Online (Sandbox Code Playgroud)

目前:

Firebase 函数:配置:获取

返回:

{
  "unknownthusarbitraryservicename": {
    "id": "The ClientID from generated private key",
    "key": "Unknown, Thus Arbitrary …
Run Code Online (Sandbox Code Playgroud)

node.js firebase firebase-admin google-cloud-firestore

9
推荐指数
0
解决办法
3080
查看次数

使用 Firebase Admin SDK 更新用户时超出配额 - 我如何请求更多?

当需要启用/禁用整个租户时,我们尝试在我们的多租户设置中更新许多用户。这样,我们有时会遇到QUOTA_EXCEEDED错误,尤其是对于拥有许多用户的大型租户。我在这里问过如何做得更好:一次禁用多个用户

由于目前没有使用 Firebase Admin SDK 更新用户的批量操作,我如何请求提高配额?

如何提高配额?

firebase firebase-authentication firebase-admin

9
推荐指数
2
解决办法
3069
查看次数

Cloud Functions模拟器需要安装模块“ firebase-admin”

继续尝试重新开始firebase serve工作。我只是问了这个问题(得到了很好的答复,谢谢): npm ERR!对等部门丢失:firebase-admin @ ^ 7.0.0,firebase-functions @ 2.3.1要求

在做npm list firebase-admin我现在看到预期的输出-- firebase-admin@7.3.0

但是firebase serve仍然无法正常工作。我得到这个:

!  Your requested "node" version "6" doesn't match your global version "10"
...
!  The Cloud Functions emulator requires the module "firebase-admin" to be installed. This package is in your package.json, but it's not available. You probably need to run "npm install" in your functions directory.
i  functions: Your functions could not be parsed due to an …
Run Code Online (Sandbox Code Playgroud)

firebase google-cloud-functions firebase-admin

9
推荐指数
2
解决办法
3722
查看次数

如何修复 Firebase_Admin 错误类型错误:__init__() 得到了一个意外的关键字参数“状态”

我是 Firebase 的新手,我正在在线学习他们的教程。我正在尝试对我用几条记录创建的快速数据库进行身份验证。我收到错误:TypeError: init () got an unexpected keyword argument 'status'

我确保我的 urllib3 是最新的,并确认我的 firebase_Admin 是最新的。我已经检查了 json 文件的文件路径并将我的数据库 URL 复制到其中。

import firebase_admin
from firebase_admin import credentials
from firebase_admin import db

#Generated from settings of a project.
cred = credentials.Certificate(r"Path to json file in the same directory as program")

firebase_admin.initialize_app(cred, {'databaseURL': 'https://mydatabase_from_firebase/'} )
Run Code Online (Sandbox Code Playgroud)

我期待返回 0,确认它有效,但我得到以下错误结果:

TypeError: __init__() got an unexpected keyword argument 'status'
Run Code Online (Sandbox Code Playgroud)

完整的回溯是:

回溯(最近一次调用):文件“C:/Users/Gaming/Firbase_setup/test.py”,第 3 行,来自 firebase_admin 导入数据库文件“C:\Users\Gaming\Firbase_setup\venv\lib\site-packages \firebase_admin\db.py”,第 33 行,来自 firebase_admin import _http_client 文件“C:\Users\Gaming\Firbase_setup\venv\lib\site-packages\firebase_admin_http_client.py”,第 32 行,raise_on_status=False,backoff_factor= 0.5) TypeError: init …

python firebase-admin

9
推荐指数
2
解决办法
4319
查看次数