我最近发现了这个应用程序 Purchase Apps ,在我使用我的谷歌帐户登录后,它能够以某种方式检索我在谷歌游戏中支付的应用程序。
我正在尝试了解它是如何完成的,因为我想构建一个类似的应用程序,但对于已下载的免费应用程序。
但是,我找不到用于检索该信息的 OAuth API 范围,即使在通过 the entire list of APIs 之后也是如此。 .
编辑: 正如我问过的关于 here 的类似问题所建议的那样,我正在对这个问题提出新的赏金。 ,并且因为在这里和那里我没有看到关于如何做到这一点以及可以用它做什么的真正答案。
我想将问题细化为多个部分:
什么API可以用来获取已购买应用的信息?我在哪里可以读到它?请展示一个完整的工作示例。
它还能做得更多吗?也许执行搜索?也许显示已安装的免费应用程序?也许是安装和卸载它们的时间?以及这些应用的类别?
使用此 API 有什么特殊要求吗?
编辑:我为此付出了最大的赏金,因为无论我阅读和尝试了多少,我仍然无法创建一个可以从 Play 商店查询用户曾经下载过的应用程序的 POC(名称、软件包名称、安装和/或删除日期、图标 URL、价格...),包括付费和免费应用程序。
如果有人找到了一个可行的示例,请说明它是如何完成的,并说明您是如何找到它的(文档或任何帮助您找到解决方案的东西)。我在任何地方都找不到它,而且这里的当前解决方案对我来说太模糊了。
最佳答案
问题已解决。该漏洞利用已关闭。
We will be closing this bug due to being logged in a Preview version of Android. If the issue is still relevant and reproducible in the latest public release (Android Q), please capture a bugreport and log the bug in https://source.android.com/setup/contribute/report-bugs. If a reply is not received within the next 14 days, this issue will be closed. Thank you for your understanding.
最新更新:
这是一个错误,Google将在下一次更新中解决。
We've deferred this issue for consideration in a future release. Thank you for your time to make Android better
这个答案已经变成了一个想法的集合,并被编辑以在评论中包含来自讨论的信息。
androidmarket api,将是自定义的 api开发商写的。它不向公众开放。
在评论中解决您的疑虑。开发人员将利用 Android Developer 和 Google 提供的当前 API 来创建一个管理所有这些的项目。
至于访问完整帐户访问权限,我不确定这些开发人员究竟是如何做到这一点的。
我建议使用 AccountManager ,它是 android.accounts 的一部分,可以访问凭据和方法 getUserData .帐户管理员有权访问密码,并能够创建和删除帐户。这可能与 Content Provider 一起使用
见 Udinic/SyncAdapter Authentication .
回复您的评论:
此博客应该可以帮助您入门。 Write your own Android Authenticator .
这些应用程序实际上是如何工作的,我无法告诉你。它们也可能有不同的实现(除非它们是幕后的协作,否则它们肯定会有所不同)。
一个猜测。首先使用GoogleSignInAccount与 com.google.android.gms.auth.api.signin .
有 scope 的定义, 以确定授予应用程序的权限范围。
使用 requestScopes() ,
public static final String PROFILE
.../ It lets your web app access over-the-air Android app installs.
对于 example :
GoogleSignInOptions gso =
new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail().
.requestScopes(new Scope("https://www.googleapis.com/auth/contacts.readonly"))
.build();
如果可以获得完全访问权限,则可以找到帐户持有人使用的所有应用的列表,并将其与设备上的内容进行比较。
Package Manager将检索设备上当前安装的所有应用的列表。
PackageInfo提供有关应用程序的详细信息。
INSTALL_REASON_USER 还会过滤掉用户主动安装的应用程序。
您可能想查看 com.google.firebase.appindexing和 Log User Actions .不同actions可以被追踪。
用户帐户历史记录位于 https://myactivity.google.com/myactivity .
一个有用的链接是OAuth 2.0 Playground .
这个 github 仓库 node-google-play ,使用节点,是最新的,将调用 Google Play API。与用作“非官方” api 的存档一样,android-market-api , 查询市场。
app claims使用以下权限:
Version 2.1.8 can access:
$ In-app purchasesOther
- receive data from Internet
- view network connections
- full network access
- use accounts on the device
- prevent device from sleeping
- read Google service configuration
值得注意的是,该应用在进行基本安装时不会设置任何权限。我无法使用任何功能,因为我没有付费应用程序。因此,对于初始搜索 - 不需要权限,这表明该应用无权访问我的帐户。
我检查了权限 - 没有设置。因此,唯一需要做的就是接受弹出窗口,如您的问题中所示。
您提到的另一个执行相同操作的应用程序更预先了解正在访问的内容。
SECURITY/PRIVACY NOTICE
The first time you run this app, it will ask for full permission to your Google account. This is unfortunately the only way to access the required information. No personal information is stored, no information about your apps is shared with the developer of this app, nor shared with any third parties. Everything is kept on your phone only.
我已在 this blog post 中详细介绍了这些应用程序。 ,这是一个大学顶点项目(没有金钱 yield )。我倾向于认为这是 API 中的一个漏洞,而不是谷歌设计的状态,因为除了开发者自己的应用程序之外,没有任何 API 调用来获取应用程序的购买。我假设这是一个零日漏洞,在这种情况下,没有合法的方法可以访问这些信息。
关于android - 如何从 Google Play 获取用户下载的应用程序(付费/免费)列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46050134/
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
我有一大串格式化数据(例如JSON),我想使用Psychinruby同时保留格式转储到YAML。基本上,我希望JSON使用literalstyle出现在YAML中:---json:|{"page":1,"results":["item","another"],"total_pages":0}但是,当我使用YAML.dump时,它不使用文字样式。我得到这样的东西:---json:!"{\n\"page\":1,\n\"results\":[\n\"item\",\"another\"\n],\n\"total_pages\":0\n}\n"我如何告诉Psych以想要的样式转储标量?解