有多种方法可以识别设备 - IMEI / IMSI / ESN,GoogleID,您自己的加密GUID,保存在私人商店中等。 但只要人们每3-6个月切换一次设备,就必须识别设备而不是用户。
我们知道Google使用唯一ID来识别允许在Google Play上购买的用户(电子邮件)等。此外,我们知道谷歌拒绝开发者访问此ID,保存并用于垃圾邮件等。实际上,现在我们可以使用客户经理来获取它,至少其中一个。 至少我不知道如何区分哪个帐户处于活动状态并用于购买我的应用程序。
在Widows Phone中,我看到了一个明智的方法:系统为开发人员提供了一些来自用户帐户ID /电子邮件的哈希值。除了识别您的用户之外,您无法对其执行任何操作。正是我想要做的!即使有人会偷走这个身份证,他也不能将其用作电子邮件或其他任何内容。
所以我搜索类似的东西。我仍然没有找到关于如何安全地识别用户的明确信息。有很多帖子,很多意见,但仍然没有明确和可理解的方式。
到目前为止,在IAP安全方案中,我想到在设备上获取所有Google帐户,并记住我或Google服务器上的双md5用于特定购买/ order_no。 稍后,当我的应用程序的任何实例将请求此购买时,发送其所有者google-id的双md5,服务器将比较它记住此特定购买/ order_no的至少一个帐户是否等于该ID,然后将回复得当。
但也许有更明确的方案?
答案 0 :(得分:1)
实施应用内结算计费API的Android开发者应该添加一个简单的功能,该功能返回当前正在使用应用内购买的Google帐户电子邮件的哈希值。除了确定唯一的购买身份之外,哈希几乎不可能将其用于任何其他事情。 此外,还有当前Google电子邮件帐户列表中的一系列哈希值。
是的,通过使用AccountManager获取帐户列表可以解决这个问题,但这需要额外的权限并获取用户的电子邮件地址,这对于应用内购买而言似乎有点过头而且实际上是不受欢迎的人们想要做的是验证用户的独特购买身份。
当前Google电子邮件帐户列表中的一系列哈希值可用于验证设备上当前使用的任何当前Google电子邮件帐户是否用于原始购买应用内结算项目。