Я разрабатываю приложение, которое использует Google In-App Billing (IAB) для пользователей, чтобы подписаться на приложение. Доступные варианты подписки: 1 месяц, 6 месяцев и 1 год.
Он также использует проверку подлинности Firebase с Google и параметры входа по электронной почте / паролю.
Я создал collection
с именем users
где каждый документ представляет пользователя, имеющего поля: displayName
, emailId
, photoUrl
, creationDate
, lastLoginDate
, isSubscribed
.
Я также намерен предоставить доступ к премиум-контенту ( доступно в Firebase Storage) только для платных подписчиков (isSubscribed = true
).
Рассмотрим следующий сценарий:
- Пользователь загружает приложение, используя идентификатор электронной почты Play store user123@gmail.com
- Пользователь входит в приложение с помощью входа в Google и с идентификатором электронной почты user123@gmail.com (аналогично идентификатору Play Store)
- Пользователь покупает подписку на 1 месяц .
- Через пару дней пользователь выходит из системы и снова входит в систему, используя Google, используя идентификатор электронной почты user456@gmail.com
На этом этапе, если текущий пользователь (user456@gmail.com) пытается приобрести 1-месячную подписку, он не разрешен как т его продукт уже куплен.
Что показывает, что IAB распознает идентификатор электронной почты Google Play Store user123@gmail.com, который использовался для загрузки приложения, и не имеет отношения к текущей пользователь вошел в приложение. Это также показывает, что текущая подписка на 1 месяц будет доступна всем многим пользователям, созданным этим экземпляром приложения. С другой стороны, Firebase не заботится о том, какой идентификатор электронной почты Google Play Store использовался для загрузки приложения; оно касается того, какой идентификатор электронной почты использовался для входа в приложение.
Если вышеприведенное понимание верно, возникают следующие вопросы:
Как я могу реализовать вышеупомянутое для каждого пользователя ограниченный доступ к премиум-контенту, когда все пользователи, созданные выше, будут считаться платными подписчиками?
Если это приложение будет позже загружено с помощью идентификатора электронной почты Google Play Store user456@gmail.com (на другое или даже одно и то же устройство) и опция входа в Google используется с тем же идентификатором электронной почты user456@gmail.com, этот пользователь все равно будет считаться платным пользователем (поскольку isSubscribed = true
), хотя идентификатор магазина Google Play user456@gmail.com никогда не приобретал подписка. Как бороться с этой аномалией?
Если вышеприведенное понимание неверно, пожалуйста, объясните, как!
Я не могу найти решение для всей этой реализации биллинга из-за этот разрыв между Google IAB и Firebase Или, может быть, я не правильно понимаю это.
Пожалуйста, направьте меня в правильном направлении!