You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GCP中查看并同步Firebase用户表以支持Cloud Run后端查询

问题描述

我首次使用Firebase开发Web应用,通过FirebaseUI实现了用户认证功能。在Firebase控制台的「Authentication」标签页中能查看包含手机号、邮箱等唯一标识的用户表,且我的Firebase项目已关联至GCP项目。
想请教:

  1. 如何在GCP中查看该Firebase应用的用户表?
  2. 理想情况是把用户数据存储在Datastore或类似服务中,有没有Firebase与GCP之间的用户同步方法?
  3. 我需要实现这个同步功能,让Cloud Run里的后端应用能基于用户标识快速查询,还能给用户表添加preferences这类自定义字段(比如编辑该字段)。

目前我只找到了直接检查用户是否存在于Firebase用户表的Python函数:

from firebase_admin import auth, credentials

def is_user_in_firebase(identifier: str) -> bool:
    try:
        auth.get_user_by_phone_number(identifier)
    except auth.UserNotFoundError:
        return False
    else:
        return True
解决方案

一、在GCP中查看Firebase用户表

Firebase认证的用户数据并不直接存储在GCP的Datastore或其他常规存储服务中,可通过以下两种方式在GCP环境中访问:

  • 借助Firebase Admin SDK,在Cloud Run、Cloud Functions等GCP服务中调用接口获取用户数据;也可以在本地通过Admin SDK导出完整用户列表。
  • 使用Firebase CLI导出用户数据:执行firebase auth:export users.json命令,将所有Firebase用户导出为JSON文件,之后可手动导入到Datastore或BigQuery中查看、分析。

二、Firebase与GCP的用户同步方法

要实现自动同步并支持自定义字段,推荐两种实用方案:

1. Firebase Auth触发器+Cloud Functions同步到Datastore

这是最直接的自动同步方案:

  • 创建Cloud Functions,监听Firebase Auth的用户创建、更新、删除事件(onCreate、onUpdate、onDelete)。
  • 事件触发时,将Firebase用户的核心信息(UID、手机号、邮箱等)同步到Datastore,同时初始化preferences这类自定义字段。
  • 示例Node.js代码(也可使用Python实现):
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();

exports.syncUserToDatastore = functions.auth.user().onCreate(async (user) => {
  const datastore = admin.firestore(); // Firestore与Datastore API兼容,也可直接用Datastore客户端
  await datastore.collection("users").doc(user.uid).set({
    uid: user.uid,
    phoneNumber: user.phoneNumber,
    email: user.email,
    preferences: {} // 初始化自定义字段
  });
});

exports.updateUserInDatastore = functions.auth.user().onUpdate(async (change) => {
  const user = change.after;
  const datastore = admin.firestore();
  await datastore.collection("users").doc(user.uid).update({
    phoneNumber: user.phoneNumber,
    email: user.email
    // 可在此添加其他需要同步的Firebase用户字段
  });
});

2. 以Datastore为用户主数据层,Firebase Auth作为认证层

如果需要更灵活的自定义字段管理,可调整逻辑:

  • 用户注册时,先在Datastore创建包含preferences等自定义字段的用户记录,再调用Firebase Admin SDK创建对应的Firebase Auth用户。
  • 后续更新用户信息时,同时维护Datastore和Firebase Auth的数据,保证一致性。
  • 这种方式下,Cloud Run后端直接查询Datastore即可,无需频繁调用Firebase Auth接口,查询效率更高。

三、Cloud Run后端的用户查询与自定义字段编辑

无论采用哪种同步方案,Cloud Run后端都可以:

  • 通过Firebase Admin SDK验证用户ID Token,获取UID后直接查询Datastore中的用户记录(包含preferences字段)。
  • 提供API接口,用于编辑preferences字段,直接更新Datastore数据即可。
  • 示例Python代码:
from google.cloud import datastore
from firebase_admin import auth

datastore_client = datastore.Client()

def get_user_preferences(user_uid: str):
    key = datastore_client.key("users", user_uid)
    user = datastore_client.get(key)
    return user.get("preferences", {}) if user else {}

def update_user_preferences(user_uid: str, new_preferences: dict):
    key = datastore_client.key("users", user_uid)
    user = datastore_client.get(key)
    if user:
        user["preferences"] = new_preferences
        datastore_client.put(user)
        return True
    return False

内容的提问来源于stack exchange,提问作者scalar_boson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 07:00:05