小编Rob*_*bin的帖子

使用 firebase_admin 或 google.cloud.firestore 在 python 中的 Firestore 客户端(作为用户)

我正在构建一个使用 Firestore 的 python 客户端应用程序。我已成功使用 Google Identity Platform 注册并登录 Firebase 项目,并使用 google.cloud.firestore.Client 创建了一个工作 Firestore 客户端,该客户端已通过用户身份验证:

import json
import requests
import google.oauth2.credentials
from google.cloud import firestore

request_url = f"https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key={self.__api_key}"
headers = {"Content-Type": "application/json; charset=UTF-8"}
data = json.dumps({"email": self.__email, "password": self.__password, "returnSecureToken": True})
response = requests.post(request_url, headers=headers, data=data)
try:
    response.raise_for_status()
except (HTTPError, Exception):
    content = response.json()
    error = f"error: {content['error']['message']}"
    raise AuthError(error)

json_response = response.json()
self.__token = json_response["idToken"]
self.__refresh_token = json_response["refreshToken"]

credentials = google.oauth2.credentials.Credentials(self.__token,
                                                    self.__refresh_token,
                                                    client_id="",
                                                    client_secret="",
                                                    token_uri=f"https://securetoken.googleapis.com/v1/token?key={self.__api_key}"
                                                    )

self.__db = firestore.Client(self.__project_id, …
Run Code Online (Sandbox Code Playgroud)

python google-authentication firebase-authentication firebase-admin google-cloud-firestore

6
推荐指数
1
解决办法
435
查看次数

Firebase 函数 Node.js 转换流

我正在创建一个 Firebase HTTP 函数,该函数进行 BigQuery 查询并返回查询结果的修改版本。该查询可能会返回数百万行,因此在响应 HTTP 客户端之前我无法将整个查询结果存储在内存中。我正在尝试使用 Node.js 流,并且由于我需要在将结果发送到客户端之前修改结果,因此我正在尝试使用转换流。但是,当我尝试通过转换流传输查询流时,Firebase 函数崩溃并显示以下错误消息:finished with status: 'response error'

我的最小可重现示例如下。我正在使用缓冲区,因为我不想一次处理一行(块),因为我需要进行异步网络调用来转换数据。

return new Promise((resolve, reject) => {
    const buffer = new Array(5000)
    let bufferIndex = 0
    const [job] = await bigQuery.createQueryJob(options)
    const bqStream = job.getQueryResultsStream()

    const transformer = new Transform({
        writableObjectMode: true,
        readableObjectMode: false,
        transform(chunk, enc, callback) {
            buffer[bufferIndex] = chunk
            if (bufferIndex < buffer.length - 1) {
                bufferIndex++
            }
            else {
                this.push(JSON.stringify(buffer).slice(1, -1)) // Transformation should happen here.
                bufferIndex = 0
            } …
Run Code Online (Sandbox Code Playgroud)

node.js firebase google-bigquery google-cloud-functions nodejs-stream

2
推荐指数
1
解决办法
1040
查看次数