我已经使用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)
这是我尝试但没有奏效的一系列事项:
我firebase deploy上次成功的最后一次是昨晚.我在linux上.
谢谢.
所以我已经阅读了所有有关在 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。
难道我做错了什么?我错过了什么吗?任何帮助表示赞赏!
我需要 Google 登录才能使用 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
所以,也许我在文档的某个地方错过了这个,但我找不到任何类似的东西.
我的用户不必输入他们当前的密码才能创建一个新密码.根据我的理解,如果用户通过身份验证,他可以在不提供当前密码的情况下更新密码.
即使这可能有点安全,我宁愿让他输入旧的,以防止人们从家庭成员那里继续进行已经过身份验证的会话并改变pw.
有没有办法做到这一点?
(我使用Admin SDK没有问题,因为我已经为这些事情设置了服务器)
在使用firebase admin SDK创建用户后,如何发送验证电子邮件?我想要结合起来createUser function,sendEmailVerification function
有人可以指出一个暗示或答案吗?谢谢
用户创建由已在应用程序中登录的管理员用户完成,因此管理员用户只是在仪表板上创建用户.这与注册方法完全不同.
我试图按照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)
所以,我获得令牌,登录新用户,发送电子邮件验证链接,然后注销新用户.但我正在执行此操作的管理员用户也会退出.我在这里想念的是什么?
我正在尝试将通知发送到具有Firebase的特定设备,但出现以下错误:
{“ r”:{“结果”:[{“错误”:{“代码”:“消息/不匹配的凭据”,“消息”:“用于验证此SDK的凭据无权将消息发送到与提供的注册令牌相对应的设备。请确保凭据和注册令牌都属于同一Firebase项目。“}}],” canonicalRegistrationTokenCount“:0,” failureCount“:1,” successCount“:0,” multicastId“: 5165415028752234000}}
我不确定是什么原因造成的,我正在使用与项目关联的服务帐户以及正确的设备ID。
任何帮助将是巨大的,谢谢!
push-notification firebase firebase-cloud-messaging firebase-admin
我试图通过我的节点/firebase 应用程序写入 CloudFirestore,但发现文档有点不清楚。当我编译我的应用程序时,终端状态:
警告,缺少 FIREBASE_CONFIG 环境变量。初始化 firebase-admin 将失败
firebase 文档说我应该运行:
firebase 函数:config:set unknownthusarbitraryservicename.key="Unknown, 因此任意 API Key" unknownthusarbitraryservicename.id="来自生成的私钥的 ClientID"
我已经生成了一个“私钥”并发现了我的“client_id”,但是:
我最终试图完成的一个例子:
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) 当需要启用/禁用整个租户时,我们尝试在我们的多租户设置中更新许多用户。这样,我们有时会遇到QUOTA_EXCEEDED错误,尤其是对于拥有许多用户的大型租户。我在这里问过如何做得更好:一次禁用多个用户
由于目前没有使用 Firebase Admin SDK 更新用户的批量操作,我如何请求提高配额?
我在Firebase 身份验证限制中没有看到启用/禁用用户
错误消息并未指明必须更改的内容。它只说
超出更新帐户信息的配额。
我在项目的配额页面 ( https://console.cloud.google.com/iam-admin/quotas )上看不到任何限制。
如何提高配额?
继续尝试重新开始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 的新手,我正在在线学习他们的教程。我正在尝试对我用几条记录创建的快速数据库进行身份验证。我收到错误: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 …