有几种方法来识别设备- IMEI/IMSI/ESN, GoogleID,您自己的加密GUID,保存在私人商店等。但只要人们每隔3-6个月更换一次设备,识别用户而不是设备就很重要。
我们知道Google使用唯一id来识别用户(电子邮件)以允许在Google Play上购买等等。我们也知道谷歌拒绝开发者访问这个ID,例如保存它并用于垃圾邮件。实际上,现在我们可以使用帐户管理器来获取它,至少其中一个。至少我不知道如何区分哪个账户是活跃的,是用来购买我的应用程序的。
在Widows Phone中,我看到了一个明智的方法:系统从用户的帐户id/电子邮件中给开发人员一些哈希值。你只能用它来识别你的用户。这正是我想做的!即使有人偷了这个ID,他也不能把它用作电子邮件或其他什么。
所以我搜索类似的东西。不过,我没有找到关于如何安全识别用户的明确信息。有很多帖子,很多意见,但仍然没有一个清晰易懂的方法。
到目前为止,在IAP安全方案中,我认为获得设备上的所有google帐户,并在我或google服务器上记住它们的双重md5,以用于特定的购买/order_no。之后,当我的应用程序的任何实例将请求此购买,发送其所有者google-id的双重md5,服务器将比较它记住的这个特定购买/order_no是否至少有一个帐户等于该id,然后将适当地回复。
但也许有更明确的方案?
实现应用内计费api的Android开发人员应该添加一个简单的功能,返回当前用于应用内购买的Google帐户电子邮件的散列。哈希使得除了确定唯一的购买身份之外,几乎不可能将其用于其他任何事情。此外,当前列表的谷歌电子邮件帐户的哈希数组。
是的,有一种方法是通过使用AccountManager获得帐户列表,但这需要额外的权限和获取用户的电子邮件地址,这对于应用内购买的目的似乎是多余的,实际上不希望如果所有人想做的是验证用户的唯一购买身份。
当前谷歌电子邮件帐户列表的哈希数组可用于验证设备上当前的谷歌电子邮件帐户是否用于最初购买应用内计费项。