在我的特定情况下唯一识别设备

时间:2011-05-05 21:40:18

标签: android

我知道这个主题是一个回收的主题 - >我只是有一个更具体的情况,它适用于我喜欢挑选你的大脑。

我正在编写一个应用程序,在首次启动时请求用户填写用户名。此用户名发送到我的服务器,检查其唯一性,并与mysql生成的UUID一起输入数据库。此用户名还用于为用户创建虚拟目录,因此用户“evan”获取example.com/evan。 UUID被发送回本地存储的电话(尚未设置存储类型,目前使用sqlite)。

该应用从不要求输入密码。手机存储我的服务器生成的UUID,并在初始启动后发送此ID以及存储的用户名以识别用户。我喜欢不使用密码的想法,因为密码只打开太多的潘多拉盒子,不管是希腊美国人我宁愿避免使用潘多拉。

我喜欢这种方法,因为如果用户工厂重置手机并将其交给下一个人,则不会登录旧人的帐户。我不喜欢这种方法,因为我担心当人们从手机上删除数据并创建新帐户时会丢失多少网址(无论出于什么原因,他们都会这样做,我不确定)。

我非常希望避免与想要恢复其网址的客户打交道。那个实习生可以更好地用来装我的咖啡。

我的自以为是的兄弟抱怨说,帐户不会从一台设备转移到另一台设备:“如果我购买一部新手机并想要我的旧帐户和网址怎么办?”

我想到了一些解决方案,比如在我的用户表中添加“上次登录”变量,我每天都可以抓取这个变量来发布超过X天的URL。或者我可以在应用程序中提供“擦除我”选项,以便人们手动释放他们的URL。或者我可以添加“我正在转移此帐户”选项,允许用户接收他们可以记下的唯一代码,购买新手机,安装我的应用程序,输入他们的旧用户名,然后输入生成的代码进行确认他们的身份。

我想如果有人手动删除我的应用数据,他们应该丢失帐户。我总是可以添加一些释放URL的卸载代码(我想想无论如何,我对卸载还不了解。)

所以这些是我正在处理的问题。任何创意提示/信息/解决方案都会很棒。

1 个答案:

答案 0 :(得分:0)

第一次登录时,我会让应用程序同时发送IMEI或MEID以及uid,以便将其存储在服务器中。

getSystemService(Context.TELEPHONY_SERVICE).getDeviceId();

http://developer.android.com/reference/android/telephony/TelephonyManager.html#getDeviceId%28%29

如果应用程序被删除并重新安装或者应用程序数据被删除,则用户可以再次登录(可能有“现有用户”按钮和其他“新用户”)。然后,您的服务器将使用相应的设备ID检查uid。如果它们匹配,则帐户再次被授权,并且uid再次存储在数据库中。

我能想到的唯一问题是设备是否没有SIM卡。如果没有IMEI,设备可能默认获取WIFI MAC地址(设备需要一种方式来访问您的服务器,因此很可能会有两种中的一种)。如果没有IMEI且没有MAC地址(我想是非常罕见的事件),那么您可以要求添加电子邮件地址以进行确认。你应该对所有这些选择都很满意。