【问题标题】:Rely on Facebook user id as a permanent user identifier依靠 Facebook 用户 ID 作为永久用户标识符
【发布时间】:2026-02-04 07:40:01
【问题描述】:

我们正在构建一个网络应用程序,现在我们正处于决定如何跟踪我们的用户的阶段。我们的默认选项是维护我们自己的用户注册系统,这很让人头疼(用户名唯一性、注册过程等)。

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

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

Azure 访问控制等其他身份管理系统是否依赖此 ID?

【问题讨论】:

    标签: facebook azure identity user-management user-registration


    【解决方案1】:

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

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

    【讨论】:

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