我正在尝试使用带有 firebase-admin 的 node.js 登录,但是当我查找 API 时,它们只有关于update、delete和 的部分create。
他们确实有关于如何通过电子邮件获取用户的部分,但如果我想登录用户,我是否也应该不通过他们的密码进行验证。我觉得我错误地阅读了如何使用 firebase-admin。我最好的猜测是我应该直接使用 Firebase 而不是新的 firebase-admin。
编辑:
如果可能的话,我只想通过电子邮件登录用户(即不是通过谷歌登录或 Facebook 登录)。
我有一个使用 firebase 作为数据库的 ember 应用程序。有一次,我需要我的 nodejs 服务器进行身份验证才能读/写数据库。
如果我不需要身份验证,我可以执行以下操作:
firebase = require('firebase')
// firebaseConfigGetter() returns my webAPI key and other stuff
firebase.initializeApp(apiKeys.FirebaseConfigGetter());
// Do Server Stuff
Run Code Online (Sandbox Code Playgroud)
但是当我确实需要身份验证时,我发现了两种可行的方法。他们都使用私有 admin-sdk 密钥。所以我做的第一件事是这样的:
情况1
admin = require('firebase-admin')
// adminConfigGetter returns my private admin-sdk key and other stuff
admin.initializeApp(apiKeys.adminConfigGetter());
// Do Server Stuff
Run Code Online (Sandbox Code Playgroud)
那奏效了。但后来,我在这里读到这也很好
案例二
firebase = require('firebase')
firebase.initializeApp(apiKeys.adminConfigGetter());
// Do Server Stuff
Run Code Online (Sandbox Code Playgroud)
这两个给我的服务器的身份验证我需要,但其中一人使用require('firebase-admin'),而其他少了点firebase = require('firebase')。所以我很好奇:如果我通过使用Case 2获得了我需要的所有身份验证权限,那么使用Case 1有什么好处?Firebase-Admin 是否授予我特权以外的其他东西?
谢谢!
我在 Google App Engine 中部署了一个 python 代码。在我的代码中,试图导入 firebase_admin,但它显示以下错误,
import firebase_admin
ImportError: No module named firebase_admin
Run Code Online (Sandbox Code Playgroud)
你好.py
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
Run Code Online (Sandbox Code Playgroud)
我使用终端尝试了简单的 python 代码: hello.py
import firebase_admin
print firebase_admin
Run Code Online (Sandbox Code Playgroud)
终端输出:
~/Desktop$ python hello.py
<module 'firebase_admin' from '/usr/local/lib/python2.7/dist-packages/firebase_admin/__init__.pyc'>
Run Code Online (Sandbox Code Playgroud) 我正在使用这些FirebaseFirestore.DocumentSnapshot字段createtime和updateTime我的 nodeJS 项目,但现在我发现这些字段只是Google Cloud 文档的一部分,在 Firebase 文档中找不到DocumentSnapshoot
我有点困惑,这些字段是新的并且还没有出现在 firebase 文档中,还是会随着 Firecloud 从 Google Cloud 工具中量身定制而被删除?
我正在尝试在我的 Node 服务器中设置会话 cookie,这是一个 Electron 应用程序的后端。我正在尝试遵循本指南。
https://firebase.google.com/docs/auth/admin/manage-cookies
我感到困惑的第一件事是该函数在“登录”部分的来源:const csrfToken = getCookie('csrfToken') “getCookie”是我应该自己编写的函数吗?
我也没有完全遵循“创建会话 cookie”片段的逻辑:
const csrfToken = req.body.csrfToken.toString();
// Guard against CSRF attacks.
if (csrfToken !== req.cookies.csrfToken) {
res.status(401).send('UNAUTHORIZED REQUEST!');
return;
}
Run Code Online (Sandbox Code Playgroud)
所以这看起来像是在检查请求主体的 CSRF 令牌是否与请求 cookie 的 CSRF 令牌中设置的相同?这是因为有人可能会手动设置 CSRF 令牌(即使用 Postman),但这样的请求不会通过,因为它不在req.cookies?这是否意味着不应在其客户端代码中设置 req.cookies ?
csrf firebase electron firebase-authentication firebase-admin
如何在特定目录(例如:/test)中列出 Firebase 存储中的文件,
这是我尝试过的:
var query = {
delimiter: 'test/'
};
const storageRef = admin.storage().bucket().getFiles(query, function(err, files, nextQuery, apiResponse) {
console.log(files);
}
Run Code Online (Sandbox Code Playgroud)
但它返回存储桶根目录下的文件..
任何的想法?
node.js google-cloud-storage firebase firebase-storage firebase-admin
是否可以使用这种样式从 firebase-admin npm 导入 FieldValue?
import { FieldValue } from 'firebase-admin/firestore';
Run Code Online (Sandbox Code Playgroud)
默认情况下,我的 Visual Studio Code 以这种方式导入:
import {FieldValue} from '@google-cloud/firestore';
Run Code Online (Sandbox Code Playgroud)
但是这样,我必须添加一个新包才能导入 FieldValue ...
有没有办法使用 Typescript 从 firebase-admin 导入它?
我正在使用 firebase-admin-python SDK 来处理 iOS 应用程序和 Flask 后端 (python) 之间的身份验证。这是我的后端身份验证端点,遵循firebase 指南:
from flask import request
from firebase_admin import auth
def get():
"""accessed via '/api/authtoken' """
try:
fir_token = request.headers["Authorization"]
decoded_token = auth.verify_id_token(fir_token)
fir_auth_id = decoded_token["uid"]
except:
...
Run Code Online (Sandbox Code Playgroud)
如何模拟 fir_token 进行单元测试?我如何模拟auth.verify_id_token这样我就不需要实际连接到 firebase 服务器?
我有一个用例,用户 A 可以说用户 B 从用户 A 那里借了一些钱,类似于 Splitwise 之类的应用程序。
我正在使用 firestore 来存储数据。在这种特殊情况下,我会将其作为文档存储在“交易”集合中,该集合将具有以下字段:
数量:20
fromUser:用户 A 的
uid toUser:用户 B 的 uid
这里的问题是用户 B 尚不存在,因此用户 B 没有 uid。我想要做的是为用户 B 创建一个临时用户,其电子邮件地址将生成一个 uid。稍后当用户 B 在应用程序上注册时,同一个用户将升级为用户 B 使用的任何身份验证提供程序的永久用户。
在搜索时,我遇到了 - https://www.freecodecamp.org/news/heres-what-i-wish-i-knew-before-i-started-using-firebase-9110d393e193/
其中提到这可以通过现在折旧的 firebase 邀请来实现。那么,现在还有其他方法可以实现这种行为吗?
我正在构建一个云函数来获取一些文档并生成一个 HTML 响应。
现在我所拥有的是:
myFunction.js
import * as admin from 'firebase-admin';
import serviceAccount from './someServiceAccountKey.json';
// OPTION #1 <-----
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://myfirebaseproject.firebaseio.com"
});
// OPTION #2 <------
admin.initializeApp();
// FUNCTION <------
async function(req,res) {
const docSnapshot = await admin.firestore().collection('someCollection').doc('someDoc').get();
// AND SO ON...
}
Run Code Online (Sandbox Code Playgroud)
在某些时候,我已经创建了那个 serviceAccount 键(我不记得是哪个教程中的)并且我一直在我的函数上使用它来“授予访问权” firebase-admin(如上面代码中的选项 #1)。因为我认为我需要这样做。
但我发现,即使没有任何初始化参数或 serviceAccount 凭据(如上面代码中的选项 #2),我也可以初始化firebase-admin并访问我的 firebase 项目资源(如 Firestore)而不会出现任何问题。
我可以对已部署的函数执行此操作,这是有道理的,因为它们位于 Firebase 项目的云环境中,如果已部署,它们应该可以访问项目资源,而无需服务帐户,对吗?
但我也发现我可以在我的 Node.js 本地环境中做到这一点。通过调用函数npx babel-node myFunction.js(使用 babel 节点进行编译和执行)。该函数能够毫无问题地访问和查询我的 Firestore(在线数据,这不是 Firestore 模拟器)。 …
node.js firebase service-accounts firebase-admin google-cloud-firestore
firebase ×10
firebase-admin ×10
node.js ×5
python ×2
csrf ×1
electron ×1
python-2.7 ×1
typescript ×1