Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
依赖Facebook用户id作为永久用户标识符_Facebook_Azure_Identity_User Management_User Registration - Fatal编程技术网

依赖Facebook用户id作为永久用户标识符

依赖Facebook用户id作为永久用户标识符,facebook,azure,identity,user-management,user-registration,Facebook,Azure,Identity,User Management,User Registration,我们正在构建一个web应用程序,现在我们正处于决定如何跟踪用户的阶段。我们的默认选择是维护我们自己的用户注册系统,这是一个非常头痛的问题(用户名唯一性、注册过程等) 作为替代方案,我们可以使用人们的Facebook身份,这意味着他们将使用Facebook的电子邮件和密码登录到我们的系统。然后,我们的后端将获取用户的Facebook id(Graph id),并将其存储在数据库中。用户将更改/上载到应用程序的任何数据都将链接到此id 问题是,我们是否可以信任id作为永久标识符,并围绕它构建一个复杂

我们正在构建一个web应用程序,现在我们正处于决定如何跟踪用户的阶段。我们的默认选择是维护我们自己的用户注册系统,这是一个非常头痛的问题(用户名唯一性、注册过程等)

作为替代方案,我们可以使用人们的Facebook身份,这意味着他们将使用Facebook的电子邮件和密码登录到我们的系统。然后,我们的后端将获取用户的Facebook id(Graph id),并将其存储在数据库中。用户将更改/上载到应用程序的任何数据都将链接到此id

问题是,我们是否可以信任id作为永久标识符,并围绕它构建一个复杂的后端。我们如何才能确保Facebook不会更改某人的id

其他身份管理系统(如Azure Access Control)是否依赖此id?

Facebook不鼓励将用户id用于除内部使用以外的任何用途。因此,如果你计划有一个url类似于/users/的个人资料页面,它可能会违反facebook的隐私期望。您最好使用代理主键创建一个
用户
表,并将其facebook id作为非主列


此外,您可能会遇到这样的情况:用户无法访问其旧的facebook帐户,并希望将其在您网站上的帐户与新的facebook身份关联。如果您在多个表中使用他们的facebook id作为外键,则不必要地将他们的旧facebook id与您的应用程序数据混淆。

我不太明白您所说的“使用代理主键创建用户表”。例如,您建议,在我们的用户表中,主键将是一些生成的GUID,这些GUID将分发给用户,以便在他的Facebook帐户出现问题时可以识别他?但是如果他忘记了GUID会发生什么呢?(我们无法向他发送电子邮件,因为他没有输入电子邮件,如果他这样做,实际上是一个常规的用户管理系统,但不是用户名,而是生成的GUID。这是一个很好的观点。如果你想支持我的假设情况,即用户无法访问其facebook帐户,你就不能完全依赖facebo好的身份验证。我只是想举一个例子,说明一个用户的facebook id可能会因为facebook本身以外的原因而更改。注意:当用户通过facebook进行身份验证时,您可以请求权限向他们发送电子邮件。当然,除了facebook集成之外,您还可以允许他们设置常规用户名和密码。StackOverflow使用这样的模型。