5

有几种方法可以识别设备 - IMEI/IMSI/ESN、GoogleID、您自己的加密 GUID、保存在私人商店等。但只要人们每 3-6 个月更换一次设备,重要的是不要识别设备,而是识别设备正是用户。

我们知道 Google 使用唯一 ID 来识别用户(电子邮件)以允许在 Google Play 等上进行购买。此外,我们知道 Google 拒绝开发人员访问此 ID,将其保存并用于垃圾邮件等。实际上,现在我们可以使用 Account Manager 获取它,至少其中一个。至少我不知道如何区分哪个帐户处于活动状态并用于购买我的应用程序。

在 Widows Phone 中,我看到了一种明智的方法:系统为开发人员提供了一些来自用户帐户 ID/电子邮件的哈希值。因此,除了识别您的用户外,您无能为力。正是我想做的!即使有人偷了这个 ID,他也不能将其用作电子邮件或其他任何东西。

所以我搜索类似的东西。我仍然没有找到关于如何安全地识别用户的明确信息。有很多帖子,很多意见,但仍然没有清晰易懂的方法。

到目前为止,在 IAP 安全方案中,我想在设备上获取所有谷歌账户,并在我的或谷歌服务器上记住它们的双 md5 以进行特定的购买/订单号。稍后,当我的应用程序的任何实例将请求此购买时,发送其所有者 google-id 的双 md5,服务器将比较它为该特定购买/order_no 记住的至少一个帐户是否等于该 ID,然后将适当地回答。

但也许有更明确的方案?

4

1 回答 1

2

实现应用内结算 api 的 Android 开发人员应该添加一个简单的函数,该函数返回当前用于应用内购买的 Google 帐户电子邮件的哈希值。除了确定唯一的购买身份之外,哈希几乎不可能用于其他任何事情。此外,还有一组当前 Google 电子邮件帐户列表的哈希值。

是的,有一种方法可以通过使用 AccountManager 获取帐户列表来解决它,但这需要额外的权限并获取用户的电子邮件地址,对于应用内购买而言,这似乎有点矫枉过正,如果所有人都想这样做,实际上是不可取的要做的是验证用户的唯一购买身份。

当前 Google 电子邮件帐户列表的哈希数组可用于验证当前设备上的任何当前 Google 电子邮件帐户是否用于最初购买应用内计费项目。

于 2014-07-06T13:43:44.253 回答