我有一个应用程序,用户可以在其中添加评分,我不希望他们必须注册才能做到这一点,但我也不希望机器人很容易游戏评分。
有没有一种方法可以让我合理地(不一定是 100%,但我不想使用反应式启发式方法)确保我的用户是人类?无需任何类型的验证码/登录/其他操作。通常我会说这是不可能的,但由于我的应用程序在 Android 上运行,我认为我们可以做得比没有好。
邮箱地址。
我的第一个想法是从 获取他们的 gmail 地址AccountManager
,但我看不到验证他们是否拥有该电子邮件地址的方法 - 即机器人只能将虚构的电子邮件发送到我的服务器,所以我认为这不能工作(我不想让他们使用他们的谷歌帐户验证我的应用程序;他们不太可能这样做)。
GCM
我的下一个想法是使用 Google 的 Cloud Messaging。我可以从设备获取云消息 ID,将其发送到我的服务器,将随机云消息从服务器发送回设备,然后将该消息发送回服务器。我认为这至少可以验证他们确实拥有带有 gmail 帐户的 Android 设备,这已经足够了。
短信
当然,我可以向他们发送 SMS,但这需要花钱,而且无缝意味着我需要获得阅读他们消息的权限,而我真的很想避免这种情况(特别是因为评级是一个可选功能)。
Android 许可服务器
也许可以使用许可验证库从谷歌获得用户从市场上下载它的签名保证,但由于我的应用程序的性质,我无法将其投放市场。
设备ID、EMEI、电话号码等
我当然不能用这些。机器人可以弥补它们!
所以 GCM 看起来是最好的(也是唯一的)选择。谁能想到别的?