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

Firebase+Stripe:如何查询特定用户是否拥有付费订阅?

查询特定用户的stripeRole实现方案

要查询特定用户的stripeRole,无法直接通过前端Firebase Auth SDK实现——前端SDK仅允许操作当前登录用户的令牌与声明。必须借助后端的Firebase Admin SDK完成,具体实现步骤如下:

1. 初始化Firebase Admin SDK(后端环境)

首先在后端项目中初始化Admin SDK,需使用服务账号密钥验证身份:

const admin = require('firebase-admin');

if (!admin.apps.length) {
  admin.initializeApp({
    credential: admin.credential.cert(require('./path/to/serviceAccountKey.json'))
    // 若使用GCP环境,可改用applicationDefault()
    // credential: admin.credential.applicationDefault()
  });
}

2. 通过UID查询用户的stripeRole

直接调用Admin SDK的getUser方法获取用户记录,从中提取自定义声明:

async function getUserStripeRole(uid) {
  try {
    const userRecord = await admin.auth().getUser(uid);
    return !!userRecord.customClaims?.stripeRole;
  } catch (error) {
    console.error('获取用户信息失败:', error);
    return false;
  }
}

3. 通过邮箱查询用户的stripeRole

若仅已知用户邮箱,可先通过getUserByEmail获取用户记录,再提取声明:

async function getUserStripeRoleByEmail(email) {
  try {
    const userRecord = await admin.auth().getUserByEmail(email);
    return !!userRecord.customClaims?.stripeRole;
  } catch (error) {
    console.error('通过邮箱获取用户失败:', error);
    return false;
  }
}

关键说明

  • 前端无法直接访问其他用户的自定义声明,这是Firebase的安全设计,避免用户越权获取或修改他人权限信息。
  • 需将上述代码部署在后端服务(如Firebase Cloud Functions、Express服务器等),前端通过API请求调用该服务,间接获取目标用户的stripeRole状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:26:00