如何实施 Google In App Billing 以仅向付费用户提供对 Firebase 中优质内容的访问

Sha*_*san 5 android firebase in-app-subscription firebase-authentication

我正在开发一个应用程序,它使用 Google In-App Billing (IAB) 供用户订阅该应用程序。可用的订阅选项有 1 个月、6 个月和 1 年。

它还使用带有 Google 和电子邮件/密码登录选项的 Firebase 身份验证。

我创建了一个collection命名users,其中每个文档代表一个具有字段的用户:displayName, emailId, photoUrl, creationDate, lastLoginDate, isSubscribed

我还打算仅向付费订阅者 ( isSubscribed = true)提供高级内容(可在 Firebase Storage 上获得)的访问权限。

考虑以下场景:

  1. 用户使用 Play 商店电子邮件 ID user123@gmail.com下载应用
  2. 用户使用 Google 登录并使用电子邮件 ID user123@gmail.com(与 Play 商店 ID 相同)登录应用
  3. 用户购买 1 个月的订阅。
  4. 几天后,用户退出并使用谷歌登录再次登录,电子邮件 ID 为user456@gmail.com

在此阶段,如果当前用户(user456@gmail.com)尝试购买 1 个月的订阅,则不允许他购买此产品。

它显示的是 IAB 识别用于下载应用程序的 Google Play 商店电子邮件 ID user123@gmail.com,并且它不关心当前登录应用程序的用户。它还表明,此应用程序实例创建的所有用户都可以使用正在进行的 1 个月订阅。另一方面,Firebase 并不关心使用哪个 Google Play 商店电子邮件 ID 来下载应用程序;它与使用哪个电子邮件 ID 登录应用程序有关。

如果上述理解为真,则出现以下问题:

  1. 当上面创建的所有用户都被视为付费订阅者时,如何实现上述每个用户对高级内容的限制访问?

  2. 如果稍后使用 Google Play 商店电子邮件 ID user456@gmail.com(在不同甚至同一设备上)下载此应用,并且使用相同电子邮件 ID user456@gmail.com 使用 Google 登录选项,则该用户仍将是被视为付费用户(因为isSubscribed = true),尽管 Google Play 商店 ID user456@gmail.com 从未购买过订阅。如何处理这个异常?

如果以上理解有误,请解释如何!

由于 Google IAB 和 Firebase 之间的差距,我无法找到整个计费实施的解决方案,或者可能是我没有正确理解它。

请指出我正确的方向!