【发布时间】:2017-02-07 04:45:51
【问题描述】:
您如何唯一标识安装了您的应用的用户,以便:
- 如果他们删除并重新安装您的应用,您就会知道是他们;
- 如果他们将您的应用安装在他们打算同时使用的第二台设备上,您会知道是他们吗?
例如,我看到 Netflix 应用会自动链接到您的桌面帐户,而无需任何用户交互。我猜他们使用accountManager.getAccounts() 或类似方法,因为他们还需要GET_ACCOUNTS 权限。但当然该权限标记为Protection level: dangerous。是否有任何技术可以做到这一点侵入性较小或可能令人担忧?
回答这个问题的关键是简单(对用户而言)和微创。 Android 提供了很多方法来识别用户,其中许多方法涉及刺穿用户的隐私,如果这是唯一的方法,我会做我现在做的事情(可选的电子邮件注册)。我只想让我的应用程序知道用户是否已经在我的系统中注册,而无需采访用户(用户名/密码、电子邮件地址、第三方 OAuth 等)。
我的主要原因是:
- 我不希望重新安装后孤立其内容的用户提出支持请求;和
- 我不想托管大量孤立的内容。
【问题讨论】:
-
我认为这是
GET_ACCOUNTS拥有dangerous级别的原因之一。如果您根据帐户跟踪谁安装了该应用程序,那么您在某种程度上会收集个人信息。尽管有关联的帐户,但同时使用的设备之间基本上没有连接,我想不出任何办法。 -
我完全同意。不过,这里的用例非常常见——想想照片应用程序。用户安装应用程序,我创建一个帐户,他们创建内容,我将其与他们的帐户相关联——其中一些是私有的,一些是共享的。我希望该帐户能够跨设备持续存在,而不会用“可怕的权限”吓到用户。我希望 Android 有一个“GUID”,它对每个发布者的用户都是唯一的,因此
com.mycompany.app1和com.mycompany.app2看到相同的值或类似的东西。但我可以明白为什么目前这行不通。 -
在这种情况下它会很有用,你是对的。另一方面,它也可能会吓到用户,让他们的部分私人内容“神奇地”出现在另一台设备上。也许如果您在许可请求期间彻底解释许可,这将有助于消除恐惧。这也将允许用户选择他是否希望将他的内容限制在一个设备上。
-
也许使用数字的 SMS 身份验证比社交网络上的 OAuth 更容易接受?只是一个建议
-
@tar,恕我直言,这个问题有很多变体,是的,但我的确切问题与 a) 最小权限(不要惊动用户)和 b) 尊重用户隐私有关。如果您可以在 SO 上找到这个确切的问题,请将其发布在下面或将其标记为重复。如果您不同意这是我要问的问题,我不知道该建议什么。我已经尽量把这个问题说清楚了。
标签: android identity android-permissions