Подтвердить что ты не робот

Как получить список платных приложений пользователем из Google Play?

Недавно я наткнулся на это приложение " Купить приложения", которое каким-то образом может извлекать приложения, за которые я заплатил, в Google Play после того, как я вошел в систему с помощью своей учетной записи Google.

Я пытаюсь выяснить, как это делается, поскольку я хочу создать подобное приложение, но для бесплатных приложений, которые были загружены.

Тем не менее, я не могу найти, какая область OAuth API Scope использовалась для получения этой информации, даже после просмотра всего списка API.

Google Sign in asking for access to androidmarket


РЕДАКТИРОВАТЬ: я назначаю новую награду за этот вопрос, как это было предложено в аналогичном вопросе, который я задал здесь, и потому что здесь и там я не вижу реального ответа о том, как это сделать, и что можно сделать с этим.

Я хотел бы уточнить вопросы на несколько частей:

  1. Какой API можно использовать для получения информации о приобретенных приложениях? Где я могу прочитать об этом? Пожалуйста, покажите полный, рабочий пример того, как это сделать.

  2. Это может сделать больше? Может быть, выполнить поиск? Может быть, показать бесплатные приложения, которые были установлены? Может быть, когда они были установлены и удалены? И категории этих приложений?

  3. Существуют ли особые требования для использования этого API?


РЕДАКТИРОВАТЬ: я возлагаю на это максимальное вознаграждение, потому что независимо от того, сколько я прочитал и попробовал, мне все равно не удалось создать POC, который может запрашивать приложения из Play Store, которые пользователь когда-либо загружал (имя, пакет имя, дата установки и/или удаления, значок URL, цена...).

Если кто-то найдет работающий образец, покажите, как это было сделано, а также покажите, как вы узнали об этом (документация или что-нибудь, что привело вас к решению). Я нигде не могу его найти, и текущие решения здесь слишком расплывчаты, чтобы начать с них.

4b9b3361

Ответ 1

Последнее обновление:

Это ошибка, и Google обратится к ней в следующем обновлении.

Мы отложили эту проблему для рассмотрения в будущей версии. Спасибо за ваше время, чтобы сделать Android лучше


Этот ответ превратился в конгломерат идей и был отредактирован для включения информации из обсуждения в комментарии.

androidmarket api, был бы настроенным api, написанным разработчиком. Он недоступен для общественности.

Чтобы ответить на ваши вопросы в комментариях. Разработчик использовал бы текущую apis, доступную через Android Developer и Google, чтобы создать проект, который управляет всеми этими.

Что касается доступа к Full Account Access, я не уверен, как именно эти разработчики достигли этого.

Я бы рекомендовал использовать AccountManager, который является частью android.accounts, имеет доступ к учетным данным и методу getUserData. Менеджер учетных записей имеет доступ к паролям и способен создавать и удалять учетные записи. Это, возможно, используется с поставщиком контента

См. Udinic/SyncAdapter Authentication.

Чтобы ответить на ваш комментарий:

Этот блог должен помочь вам начать работу. Напишите свой собственный Android-аутентификатор.


Как эти приложения действительно работают, я не могу сказать вам. Они могут также иметь разные реализации (если они не являются совместными усилиями за кулисами, они, безусловно, будут разными).

Догадка. Сначала используйте GoogleSignInAccount с com.google.android.gms.auth.api.signin.

Там определено определение области, чтобы определить степень разрешений приложения.

Используя requestScopes(),

public static final String PROFILE

.../Это позволяет вашему веб-приложению получать доступ к приложениям Android для Android.

Например:

GoogleSignInOptions gso =
        new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail().
            .requestScopes(new Scope("https://www.googleapis.com/auth/contacts.readonly"))
            .build();

Если можно получить полный доступ, список всех приложений, используемых владельцем учетной записи, можно найти и сравнить с тем, что на устройстве.

Менеджер пакетов будет получать список всех приложений, установленных на устройстве.
PackageInfo предоставляет подробную информацию об этом приложении.
INSTALL_REASON_USER также отфильтровывает приложения, которые были активно установлены пользователем.

Возможно, вы захотите просмотреть com.google.firebase.appindexing и выполнить действия пользователя в журнале. Можно отслеживать различные действия.

Историю учетных записей пользователей можно найти на странице https://myactivity.google.com/myactivity.

Полезной ссылкой является OAuth 2.0 Playground.


Этот узел github repo -google-play, используя узел, является текущим и будет вызывать API Google Play. Как и архив, который использовался как "неофициальный" api, android-market-api, запрашивал рынок.


Приложение 1

Приложение заявляет, что использует следующие разрешения:

Версия 2.1.8 может иметь доступ:
$ Покупки в приложении

Другой

  • получать данные из Интернета
  • просмотр сетевых подключений
  • полный доступ к сети
  • использовать учетные записи на устройстве
  • не позволять устройству спать
  • прочитать конфигурацию службы Google

Примечательно, что приложение не устанавливает никаких разрешений при наличии базовой установки. Мне не удалось использовать какие-либо функции, так как у меня нет платных приложений. Таким образом, для первоначального поиска не было никаких разрешений, что указывало бы, что приложение не имеет доступа к моей учетной записи.

Я проверил разрешения - их не было. Поэтому нужно было только принять всплывающее окно, как показано в вашем вопросе.

SVhst.png


Приложение 2

Другое приложение, на которое вы ссылаетесь, делает то же самое, более подробно о том, к чему обращаются.

Мои платные приложения

УВЕДОМЛЕНИЕ О БЕЗОПАСНОСТИ/КОНФИДЕНЦИАЛЬНОСТИ
При первом запуске этого приложения он будет запрашивать полное разрешение вашей учетной записи Google. Это, к сожалению, единственный способ получить доступ к необходимой информации. Никакая личная информация не сохраняется, никакая информация о ваших приложениях не предоставляется совместно с разработчиком этого приложения и не предоставляется третьим лицам. Все хранится только на вашем телефоне.

Y4DIn.pngdCXjc.pngUKi2e.png1bLEK.png


Я подробно рассказывал об этих приложениях в этом блоге, который был для университетского проекта (без денежного выигрыша). Я склонен думать, что это эксплойт в API, а не статус по дизайну от Google, так как нет вызовов API для получения покупок приложений, отличных от собственного приложения разработчика. Я выдвигаю гипотезу о том, что он использует нулевой день, и в этом случае нет законного способа доступа к этой информации.

Ответ 2

В случае одного из этих приложений (My Paid Apps) после проверки сетевого трафика довольно очевидно, что он использует страницу "Учетная запись" для получения списка платных приложений. Теперь используемый механизм - это тот же механизм, что и Google Chrome, и Pokemon GO, предположительно, в определенный момент времени.

Вкратце, шаги для этого заключаются в следующем:

  1. Вход: то, что упомянутая программа делает для первого шага, - это вход в систему пользователя и доступ к токену доступа пользователя. Для этого используется метод android.accounts.AccountManager.getAuthToken(). (См. Больше: , android.os.Handler) rel=noreferrer>AccountManager) Однако, что касается области токена, oauth2:https://www.google.com/accounts/OAuthLogin. Возможно, важно отметить, что на основе документации OAth2 от Google эта область недействительна; однако он кажется действительным для Google OAuth v1.

  2. Преобразование вновь извлеченного токена доступа в ubertoken: теперь, что на самом ubertoken предполагается ubertoken, неизвестно, и официальной документации по нему нет. Тем не менее, это было замечено в дикой природе, которое будет использоваться браузером Chrome для входа в систему. Это делается путем запроса страницы https://accounts.google.com/OAuthLogin?source=ChromiumBrowser&issueuberauth=1.

  3. Преобразование ubertoken в сеанс веб-сайта: позже, используя вновь созданный ubertoken можно получить сеанс веб-сайта, используя конечную точку https://accounts.google.com/MergeSession API. После этого шага приложение, по существу, может загружать все личные страницы, которые вы можете открыть, используя свой браузер во время входа в систему; кроме некоторых специальных страниц, включая настройки оплаты.

  4. Получение списка платных приложений: запрос и разбор страницы https://play.google.com/store/account.

Ниже приведен трафик приложений, захваченный " Packet Capture ":

Captured Traffic

Как видно на картинке, конечный результат идентичен тому, что я получаю, когда я обычно открываю страницу учетной записи магазина на своем ПК с помощью Chrome Desktop: Chrome view source

Примечание стороны:

Кажется, ни одна из этих конечных точек не документирована, поскольку они в основном используются собственными программами Google и должны считаться внутренними. Поэтому я настоятельно рекомендую не использовать их в какой-либо программе или коде, которые вы ожидаете запускать в течение длительного времени или в производственной среде. Кроме того, здесь есть и плохие новости, кажется, что на странице аккаунта Google Play перечислены только платные приложения или специальные бесплатные приложения (особенно OEM-приложения). Я попытаюсь найти какое-то время и углубиться в другое приложение.

Интересные статьи:

Покемонские жетоны

Использование Google Chrome OAuth2 Tokens

Ответ 3

вы можете получить имя пакета для всех установленных приложений на устройстве, а затем получить информацию о каждом установленном пакете, который вы найдете на устройстве, из игры Google, без необходимости входить в учетную запись пользователя. есть некоторые сторонние или неофициальные apis, чтобы получить информацию о приложениях Google Play как json, получив имя пакета приложения. например: https://42matters.com/, затем используйте полученную информацию для каждого пакета, чтобы найти бесплатные.