我目前通过存储该用户的FacebookID来唯一地识别用户。我最近阅读了,我看到这是不正确的用法,Facebook ID可能因某些原因而改变,总而言之我不应该使用它们。这是真的?如果是,那么当新的Facebook用户登录并为自己验证一种唯一标识用户的可行方法时派生的AWS Cognito ID是?如果没有,我如何唯一地链接一个Facebook帐户,显然没有足够稳定的变量存储,并在我的数据库中存储唯一标识符?
答案 0 :(得分:1)
检查以下声明(来自官方文档:https://developers.facebook.com/docs/apps/upgrading):
无论他们最初用于注册您的应用的版本是什么,对于已登录您应用的用户,ID都将保持不变。对于在过去的任何时间点登录您的应用的任何人来说,此更改都是向后兼容的。
因此,您可以使用Facebook ID唯一标识您的用户。
但是,根据您的使用案例和您计划管理安全性的方式,您应该考虑更多的事情。 AWS Cognito ID的目的不是在用户之间进行通信,而是保存在您的应用和Cognito之间。因此,如果您希望用户使用他们的帐户进行通信(例如发送短信),则Facebook ID更适合这种情况。然而,当我尝试使用DynamoDB实现细粒度的访问控制时,我遇到了this problem。
答案 1 :(得分:0)
正如Hatim所说,Cognito身份ID并不意味着在用户之间共享。
话虽这么说,一旦身份标识具有与之关联的登录,它只能在与另一个经过身份验证的标识合并时更改。除非你这样做,听起来不像你,这将是一种识别用户的稳定方式。您可以使用身份标识作为数据库中的标识符,只要它没有公开。
如果您正在使用DynamoDB,正如this blog post所述,通过这种方式执行此操作可以让您配置IAM角色,从而更安全地访问此数据。