【发布时间】:2017-04-03 09:25:14
【问题描述】:
我正在使用 Angular 和 PHP 创建一个 TODO 列表应用程序。
我使用 Auth0 来允许 Facebook 身份验证,并且在该过程完成后,用户被重定向到添加 TODO 页面。但是,我对如何将该 TODO 项保存在我的 MySQL 数据库中感到困惑。我应该使用哪个用户 ID 来保存 TODO 项?
作为回报,我将获得 Facebook 用户 ID;我可以使用 FB 用户 ID 保存它吗?
【问题讨论】:
我正在使用 Angular 和 PHP 创建一个 TODO 列表应用程序。
我使用 Auth0 来允许 Facebook 身份验证,并且在该过程完成后,用户被重定向到添加 TODO 页面。但是,我对如何将该 TODO 项保存在我的 MySQL 数据库中感到困惑。我应该使用哪个用户 ID 来保存 TODO 项?
作为回报,我将获得 Facebook 用户 ID;我可以使用 FB 用户 ID 保存它吗?
【问题讨论】:
您可以,但如果您使用 Facebook ID 作为内部方式来识别 MySQL 数据库中的用户,您的应用程序更改的灵活性就会降低。
例如,您将 Facebook ID 保存在具有支持 Facebook ID 格式的数据类型的列中。现在想象一下,在两个月内您还想支持 Google 用户。
Google ID 可能采用您选择的数据类型不支持的格式,因此您需要进行更改。此外,Google 和 Facebook 的标识符甚至可能不是全球唯一的,因此 Google 可以使用相同的标识符来表示用户 A,而在 Facebook 中它用于用户 B。
您最好的办法是将数据与您管理的内部标识符关联起来,然后他们将其映射到一种全球唯一的方式来识别您的用户;例如电子邮件地址。
鉴于您使用的是 Auth0,您可以利用它将为您提供globally unique identifier for each user这一事实。这意味着您以后可以支持对用户进行身份验证的新方法,并且 Auth0 将始终为您的应用程序提供一个全球唯一的 ID,即使在用户无需提供电子邮件地址进行身份验证的情况下也是如此。
【讨论】: