android - signup - https play google com apps publish singup




如何從Google Play獲取用戶下載的應用列表(付費/免費)? (4)

如果您具有root訪問權限,則可以訪問 /data/data/com.android.vending/databases/library.db

OnePlus3T:/data/data/com.android.vending/databases
-rw-rw---- 1 u0_a2 u0_a2 229376 2018-12-26 18:01 library.db

此數據庫包含所有信息,您下載的應用程序,已購買的應用程序,甚至是您已完成 IAP 應用程序。

檢查所有權表,它包含所有信息。

ownership (account STRING, library_id STRING, backend INTEGER, doc_id STRING, doc_type INTEGER, offer_type INTEGER, document_hash INTEGER, subs_valid_until_time INTEGER, app_certificate_hash STRING, app_refund_pre_delivery_endtime_ms INTEGER, app_refund_post_delivery_window_ms INTEGER, subs_auto_renewing INTEGER, subs_initiation_time INTEGER, subs_trial_until_time INTEGER, inapp_purchase_data STRING, inapp_signature STRING, preordered INTEGER, owned_via_license INTEGER, shared_by_me INTEGER, sharer_gaia_id TEXT, shareability INTEGER, purchase_time INTEGER, PRIMARY KEY (account, library_id, backend, doc_id, doc_type, offer_type))

我最近遇到了這個應用程序 購買應用程序 ,它以某種方式能夠檢索我在使用我的谷歌帳戶登錄後在谷歌播放中支付的應用程序。

我正試圖找出它是如何完成的,因為我想構建一個類似的應用程序,但對於下載的免費應用程序。

但是,即使經過 整個API列表 ,我也無法找到用於檢索該信息的OAuth API Scope。

編輯:我正在對這個問題提出新的賞金,正如我在 here 提出的一個類似的問題所提出的那樣,因為在這里和那裡我沒有看到關於如何做到的真正答案,以及可以做些什麼用它。

我想將問題細化為多個部分:

  1. 什麼是可用於獲取已購買應用程序信息的API? 我在哪裡可以閱讀它? 請展示如何操作的完整實用示例。

  2. 可以做得更多嗎? 也許執行搜索? 也許顯示已安裝的免費應用程序? 也許是他們安裝和卸載的時間? 那些應用程序的類別?

  3. 使用此API有什麼特殊要求嗎?

編輯:我正在為此付出最大的賞金,因為無論我閱讀和嘗試了多少,我仍然無法製作可以從用戶下載的Play商店查詢應用程序的POC(名稱,包裝)名稱,安裝和/或刪除日期,圖標URL,價格...),包括付費和免費應用程序。

如果有人找到了工作樣本,請展示它是如何完成的,並展示您是如何找到它的(文檔或任何導致您獲得解決方案的內容)。 我無法在任何地方找到它,而且目前的解決方案對我來說太模糊了。


如果是其中一個應用程序(My Paid Apps),在檢查網絡流量後,很明顯它確實使用Store的帳戶頁面來檢索付費應用程序列表。 現在,它使用的機制與穀歌瀏覽器當前使用的機制相同,而口袋妖怪GO應該在某個時間點使用。

簡而言之,這樣做的步驟如下:

  1. 登錄 :上述程序第一步所做的是將用戶登錄並訪問用戶的訪問令牌。 為此,它使用 android.accounts.AccountManager.getAuthToken() 方法。 (查看更多: AccountManager )但是,對於令牌範圍,請求 oauth2:https://www.google.com/accounts/OAuthLogin 。 值得注意的是,根據Google提供的 OAth2文檔 ,此範圍無效; 但是,它似乎是Google OAuth v1的有效範圍。

  2. 將新檢索的訪問令牌轉換為 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 頁面。

以下是“ 數據包捕獲 ”捕獲的應用程序流量

由於在圖片中清晰可見,最終結果與我通常使用Chrome桌面在我的電腦上打開商店帳戶頁面時的結果相同:

旁注

似乎這些終點都沒有記錄,因為它們主要由Google自己的程序使用,應該被視為內部的。 因此,我強烈建議不要在任何您希望長時間運行或在生產環境中運行的程序或代碼中使用它們。 此外,這裡也有壞消息,似乎Google Play的帳戶頁面僅列出付費應用程序或特殊免費應用程序(尤其是OEM應用程序)。 我會嘗試找一些時間深入挖掘其他應用程序。

有趣的文章

口袋妖怪代幣

利用谷歌Chrome的OAuth2代幣


我有兩個資源供您考慮,但首先,總之,不,不。 沒有來自GOOGLE的api讓你做你想做的事,因為這些指標不存儲在手機中,它們在google play商店服務器上,並且google沒有官方api用於遊戲商店。 但是你可以收集這兩個網站的一些信息:

https://www.quora.com/Is-there-an-API-for-the-Google-Play-Store https://www.quora.com/Is-there-an-API-for-the-Google-Play-Store

https://android.stackexchange.com/questions/162146/how-to-see-all-the-apps-i-have-downloaded-from-google-play-store

這足以看到如何實現這一目標。

首先,帳戶下載的應用程序列表只能由帳戶進行參考。 這可以通過Play商店完成。 因為你的應用程序將安裝在那個用戶手機上,這個劑量很重要...你在。

第二,你需要為GOOGLE PLAY STORE構建一個第三方API,有一些在那裡,檢查第一個鏈接。

使用您選擇的api,您將向Play商店發送get請求,作為回報,您應該在大多數情況下收到要反序列化的json對象。

反序列化對象,您將獲得列表。 您獲得的列表將取決於您使用的端點,但這應該由API本身解釋。

祝好運!


最近更新:

這是一個錯誤, Google 將在下次更新時解決它。

我們已將此問題推遲到將來的版本中考慮。 感謝您抽出寶貴時間

這個答案已經變成了一個集合的想法,並經過編輯,以包括評論中討論的信息。

androidmarket api,將是開發人員編寫的自定義 api 。 它不向公眾開放。

在評論中解決您的疑慮。 開發人員可以利用Android Developer和Google提供的當前apis創建一個管理所有這些的項目。

至於訪問 Full Account Access ,我不確定這些開發人員是如何實現這一目標的。

我建議使用 AccountManager ,它是android.accounts的一部分,可以訪問憑證和方法 getUserData 。 客戶經理可以訪問密碼,並且能夠創建和刪除帳戶。 這可能與 Content Provider一起使用

請參閱 Udinic / SyncAdapter身份驗證

要回复你的評論:

這個博客應該可以幫助您入門。 編寫自己的Android身份驗證器

這些應用程序實際上是如何工作的,我無法告訴你。 他們也可能有不同的實現(除非他們是幕後的協作努力,他們肯定會有所不同)。

一個猜測。 首先在 com.google.android.gms.auth.api.signin 使用 GoogleSignInAccount

有一個 scope 定義,用於確定授予應用程序權限的範圍。

使用 requestScopes()

public static final String PROFILE

... /它可讓您的網絡應用程序訪問無線Android應用程序安裝。

example

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 日誌用戶操作 。 可以跟踪不同的 actions

用戶帳戶歷史記錄位於 https://myactivity.google.com/myactivity

一個有用的鏈接是 OAuth 2.0 Playground

這個使用節點的github repo node-google-play 是最新的,將調用Google Play API。 正如用作“非官方”api, android-market-api 的檔案一樣,用於查詢市場。

應用1

應用聲稱 使用以下權限:

版本2.1.8可以訪問:
$ 應用內購買

其他

  • 從互聯網接收數據
  • 查看網絡連接
  • 完全網絡訪問
  • 在設備上使用帳戶
  • 防止設備睡覺
  • 閱讀Google服務配置

值得注意的是,當有基本的安裝時,應用程序不會設置任何權限。 我無法使用任何功能,因為我沒有付費應用。 因此,對於初始搜索 - 不需要權限,這表明應用程序無法訪問我的帳戶。

我檢查了權限 - 沒有設置。 因此,唯一需要的是接受彈出窗口,如問題中所示。

應用2

您提到的另一個應用程序也可以提供相同的功能。

我的付費應用

安全/隱私聲明
首次運行此應用時,它會要求您的Google帳戶獲得完全許可。 遺憾的是,這是訪問所需信息的唯一方法。 不會存儲任何個人信息,也不會與此應用的開發者共享有關您的應用的信息,也不會與任何第三方共享。 一切都只保存在手機上。

我在 這篇博文中 詳細介紹了這些應用程序, 這篇文章 是針對大學頂點項目(沒有金錢收益)。 我傾向於認為這是API中的漏洞,而不是谷歌設計的狀態,因為沒有API調用來獲取除開發者自己的應用之外的應用程序的購買。 我假設它是零日漏洞,在這種情況下,沒有合法的方式來訪問這些信息。





google-signin