什么可以是用户帐户的唯一标识符?

Posted

技术标签:

【中文标题】什么可以是用户帐户的唯一标识符?【英文标题】:What can be a unique identifier for user account? 【发布时间】:2015-03-14 13:04:18 【问题描述】:

我需要在服务器上为用户帐户保存一些唯一标识符,以便我可以在另一个用户设备上确定该帐户标识符已经设置。但我不知道什么可以是帐户的唯一 ID,以及如何以编程方式获取它?

编辑:

我正在将应用从付费版转移到免费增值版(使用应用内购买)。我需要保存所有购买了应用程序的用户。所以我创建了服务器并希望将所有用户保存在那里。所以我需要帐户的唯一值,这样用户就可以在他的其他设备上恢复所有购买。

【问题讨论】:

在 iCloud 中存储一个包含用户登录信息的文件,并让它同步到所有拥有该应用的设备? @JoachimIsaksson 你能写一个代码示例如何获取它吗? 【参考方案1】:

我建议使用用户的电子邮件地址。您将如何获得它是提示用户使用它。

然后使用通常的验证,您向该地址发送一封电子邮件,其中包含用户单击的链接,该链接发送回带有唯一密钥的 HTTP 响应。

为此,您需要一台服务器。您的应用程序将连接到服务器,发送用户的帐户信息和电子邮件地址,然后服务器将向该电子邮件地址发送一封电子邮件,其中包括一个编码的可点击链接。

可能有现成的服务器库可以做到这一点。我必须做一些研究才能找到它们。我建议你这样做。

【讨论】:

我想我不需要所有这些。我只需要一些我可以获得的帐户的唯一信息。据我所知,不可能从 icloud 获取用户电子邮件 请注意,我建议您向 USER 询问他/她的电子邮件,然后通过服务器使用验证电子邮件。如果您不需要“所有这些”,那么您需要提出另一个解决方案。【参考方案2】:

如果您不想支持一个用户的多个设备,您可以使用 Vendor-ID,这对于所有 ios-devices 都是唯一的:

UIDevice.currentDevice().identifierForVendor

或作为字符串:

UIDevice.currentDevice().identifierForVendor.UUIDString.

否则你应该知道用户必须在注册时填写某种登录名。

【讨论】:

【参考方案3】:

我不知道您是否希望用户启用 iCloud,但如果您希望这样做,为什么不通过获取 NSFileManager 的 ubiquityIdentityToken 属性的值来检查 iCloud 可用性,如下所示:

let token = NSFileManager.defaultManager().ubiquityIdentityToken

根据 iCloudDesignGuide,“属性的值是代表当前活动的 iCloud 帐户的唯一令牌。”这就是我认为你想要得到的。您应该能够使用此值,即使您没有在 iCloud 中存储任何内容,只要您为应用程序配置了它并且他们已登录并启用了“iCloud Drive”。

【讨论】:

以上是关于什么可以是用户帐户的唯一标识符?的主要内容,如果未能解决你的问题,请参考以下文章

安全标识符

iCloud / CloudKit 用户的唯一标识符

VBS脚本获取安全标识符SID(Security Identifiers)的方法

通过同步帐户使用不同计算机时 Outlook 中的唯一约会标识符

使用 ObjectId 作为 mongo 中用户的唯一标识符的替代方法是啥?

如何获取Android唯一标识