我的 iPhone 应用程序的 Facebook ID 或 Cognito ID 或替代方案

Facebook ID or Cognito ID or Alternative for my iPhone application

我目前通过存储该用户的 FacebookID 来唯一标识该用户。我最近四处阅读,发现这是不正确的用法,而且 Facebook ID 可能会因某种原因而改变,总而言之,我不应该使用它们。这是真的?如果是这样,当新的 Facebook 用户登录并验证自己时派生的 AWS Cognito ID 是否是唯一识别用户的可行方法?如果不是,我将如何唯一 link 一个 facebook 帐户,显然没有足够稳定的变量来存储,具有唯一标识符来存储在我的数据库中?

检查以下语句(来自官方文档:https://developers.facebook.com/docs/apps/upgrading):

No matter what version they originally used to sign up for your app, the ID will remain the same for people who have already logged into your app. This change is backwards-compatible for anyone who has logged into your app at any point in the past.

因此,您可以使用 Facebook ID 来唯一标识您的用户。

但是,根据您的用例和您计划管理安全性的方式,您应该考虑更多的事情。 AWS Cognito ID 的用途不是在用户之间进行通信,而是保存在您的应用程序和 Cognito 之间。因此,如果您希望用户使用他们的帐户进行交流(例如发送短信),Facebook ID 更适合。尽管如此,我在尝试使用 DynamoDB 实现细粒度访问控制时遇到了

正如 Hatim 所说,Cognito 身份 ID 不应在用户之间共享。

也就是说,一旦一个身份 ID 关联了一个登录名,它只能在与另一个经过身份验证的 ID 合并时发生变化。除非您这样做(听起来不像您这样做),否则这将是一种识别用户的稳定方式。您可以使用身份 ID 作为数据库中的标识符,只要它不暴露即可。

如果您使用的是 DynamoDB,正如 this blog post 所解释的那样,这样做可以让您配置 IAM 角色,从而更安全地访问这些数据。