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

如何基于Firebase Functions调用Google Play Developer API实现内购验证

Firebase Functions 对接 Google Play Developer API 授权配置全攻略

我之前做过好几个类似的内购验证项目,用Firebase Functions来实现的话,授权这块其实没那么复杂,选对方式就很顺畅。核心推荐用服务账号来做授权,完全不用手动管OAuth令牌,适合服务器端自动化场景,下面是一步步的配置细节:

一、先搞定服务账号的创建与配置

  • 登录Google Cloud控制台,找到你Firebase项目对应的Cloud项目(两者是绑定的,直接找就行)
  • 进到「IAM与管理」→「服务账号」页面,点「创建服务账号」,给它起个好记的名字比如play-api-verifier,加个描述方便后续识别
  • 关键一步:给这个服务账号分配角色,必须加Service Account Token Creator(用来生成访问令牌),如果是要读取订阅/购买数据,后续还要在Play Console里加权限,先把Cloud这边的角色搞定

二、把服务账号关联到Google Play Console

这步很容易忘,不关联的话调用API会直接权限报错:

  • 登录你的Google Play Console,进入目标应用的管理页面
  • 点「设置」→「开发者账号」→「API访问」
  • 在「服务账号」板块,点「关联服务账号」,输入刚才创建的服务账号的邮箱地址,发送邀请就行
  • 等个几分钟让权限同步,回到Cloud控制台确认一下状态

三、在Firebase Functions代码里实现授权逻辑

不用手动下载密钥文件!因为Cloud Functions运行在Google自家环境里,会自动识别默认服务账号,直接用官方客户端库处理授权就行,给你个示例代码:

const { google } = require('googleapis');
const functions = require('firebase-functions');

const playDeveloper = google.androidpublisher('v3');

exports.verifyInAppPurchase = functions.https.onRequest(async (req, res) => {
  try {
    // 自动使用Cloud环境的服务账号授权,指定API所需的 scope
    const auth = new google.auth.GoogleAuth({
      scopes: ['https://www.googleapis.com/auth/androidpublisher']
    });
    const authClient = await auth.getClient();
    google.options({ auth: authClient });

    // 从前端请求里拿关键参数:包名、商品ID、购买令牌
    const { packageName, productId, purchaseToken } = req.body;

    // 调用Play Developer API验证购买状态
    const verifyResult = await playDeveloper.purchases.products.get({
      packageName,
      productId,
      token: purchaseToken
    });

    // 根据验证结果做后续处理
    if (verifyResult.data.purchaseState === 0) { // 0代表购买有效
      // 这里可以加你的业务逻辑:更新用户数据库、发通知、记录日志等等
      res.status(200).json({ success: true, data: verifyResult.data });
    } else {
      res.status(400).json({ success: false, message: '购买状态无效' });
    }
  } catch (err) {
    console.error('验证失败:', err);
    res.status(500).json({ success: false, message: err.message });
  }
});

四、几个容易踩坑的点

  • 必须先在Cloud控制台的「API和服务」→「库」里,搜索并启用Google Play Developer API,不然调用会提示API未启用
  • 如果遇到权限不足的错误,去Play Console的API访问页面,确认服务账号有没有被授予「查看应用信息」「管理订单」这类权限
  • 要是验证订阅的话,把API方法换成playDeveloper.purchases.subscriptions.get,参数逻辑差不多

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:51:25