Как внедрить Google In App Billing для предоставления доступа к платному контенту в Firebase только платным пользователям - PullRequest
2 голосов
/ 12 февраля 2020

Я разрабатываю приложение, которое использует Google In-App Billing (IAB) для пользователей, чтобы подписаться на приложение. Доступные варианты подписки: 1 месяц, 6 месяцев и 1 год.

Он также использует проверку подлинности Firebase с Google и параметры входа по электронной почте / паролю.

Я создал collection с именем users где каждый документ представляет пользователя, имеющего поля: displayName, emailId, photoUrl, creationDate, lastLoginDate, isSubscribed.

Я также намерен предоставить доступ к премиум-контенту ( доступно в Firebase Storage) только для платных подписчиков (isSubscribed = true).

Рассмотрим следующий сценарий:

  1. Пользователь загружает приложение, используя идентификатор электронной почты Play store user123@gmail.com
  2. Пользователь входит в приложение с помощью входа в Google и с идентификатором электронной почты user123@gmail.com (аналогично идентификатору Play Store)
  3. Пользователь покупает подписку на 1 месяц .
  4. Через пару дней пользователь выходит из системы и снова входит в систему, используя Google, используя идентификатор электронной почты user456@gmail.com

На этом этапе, если текущий пользователь (user456@gmail.com) пытается приобрести 1-месячную подписку, он не разрешен как т его продукт уже куплен.

Что показывает, что IAB распознает идентификатор электронной почты Google Play Store user123@gmail.com, который использовался для загрузки приложения, и не имеет отношения к текущей пользователь вошел в приложение. Это также показывает, что текущая подписка на 1 месяц будет доступна всем многим пользователям, созданным этим экземпляром приложения. С другой стороны, Firebase не заботится о том, какой идентификатор электронной почты Google Play Store использовался для загрузки приложения; оно касается того, какой идентификатор электронной почты использовался для входа в приложение.

Если вышеприведенное понимание верно, возникают следующие вопросы:

  1. Как я могу реализовать вышеупомянутое для каждого пользователя ограниченный доступ к премиум-контенту, когда все пользователи, созданные выше, будут считаться платными подписчиками?

  2. Если это приложение будет позже загружено с помощью идентификатора электронной почты Google Play Store user456@gmail.com (на другое или даже одно и то же устройство) и опция входа в Google используется с тем же идентификатором электронной почты user456@gmail.com, этот пользователь все равно будет считаться платным пользователем (поскольку isSubscribed = true), хотя идентификатор магазина Google Play user456@gmail.com никогда не приобретал подписка. Как бороться с этой аномалией?

Если вышеприведенное понимание неверно, пожалуйста, объясните, как!

Я не могу найти решение для всей этой реализации биллинга из-за этот разрыв между Google IAB и Firebase Или, может быть, я не правильно понимаю это.

Пожалуйста, направьте меня в правильном направлении!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...