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

使用Firebase Auth的游戏如何有效关联IAP收据?

解决方案:IAP与Firebase用户关联的实现方案

1. 服务器端验证并关联购买记录到Firebase UID

核心逻辑是完全绕过客户端本地状态,所有IAP校验通过后端完成:

  • 用户完成购买后,客户端将purchaseToken、productId等购买凭证发送到Firebase Cloud Functions。
  • 云函数调用Google Play Developer API验证凭证有效性,确认订阅状态、非消耗品归属。
  • 验证通过后,将购买详情(产品ID、到期时间、状态)写入Firebase实时数据库/Firestore,直接关联到当前请求的context.auth.uid(云函数可自动获取登录用户的UID)。
  • 用户换设备或切换Google账号登录同一Firebase用户时,客户端直接从Firebase数据库读取关联的购买记录,无需依赖当前设备的Google账号状态。
  • 针对订阅,用云函数定时触发器定期调用Play API刷新状态,同步到数据库保证实时性。

2. 绑定Google Play账号到Firebase用户(保留原有Auth方案)

无需替换现有登录方式,通过关联机制实现绑定:

  • 在客户端添加「绑定Google Play账号」功能,用户登录Firebase后,可关联当前设备的Google Play账号(通过Google Sign-In获取账号ID)。
  • 将Google Play账号ID存入Firebase用户的customClaims或用户文档中。
  • 用户发起购买后,客户端将购买凭证、Firebase UID、Google Play账号ID一同发送到云函数,验证时校验凭证对应的Google账号ID是否与绑定的一致,确保购买归属该Firebase用户。
  • 后续用户换设备登录同一Firebase账号时,可通过绑定的Google Play账号ID,由云函数调用Play API查询历史购买记录。

3. 改用Google Play登录作为Firebase Auth主方式(可选)

如果业务允许单一登录方式,这是最直接的方案:

  • 用户通过Google Play登录Firebase,此时Firebase UID与Google Play账号直接关联。
  • 购买IAP后,客户端将凭证发送到云函数,验证时直接用该Firebase用户关联的Google账号ID查询Play API,确保购买与Firebase用户一一对应。
  • 该方案限制了登录方式,但彻底解决了账号绑定问题,适合对登录方式要求单一的游戏。

关键注意事项

  • 所有IAP状态校验必须在服务器端完成,禁止仅依赖客户端本地存储的收据,防止篡改。
  • 非消耗品的购买记录要做幂等处理,避免重复写入同一购买信息。
  • 订阅状态需定时同步,防止用户订阅到期后仍能访问付费服务。

内容的提问来源于stack exchange,提问作者Daniel Ken Martinez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 16:13:17