Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.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
Java 用户注册与Facebook连接_Java_Facebook_Database Design_Relational Database - Fatal编程技术网

Java 用户注册与Facebook连接

Java 用户注册与Facebook连接,java,facebook,database-design,relational-database,Java,Facebook,Database Design,Relational Database,我的网站支持两种登录方式(类似于包括stackoverflow在内的许多网站) 注册您的电子邮件和密码,然后登录 使用Facebook connect登录 所以我得到了一个User类(我使用的是Ebean[JPA])。 当用户使用FacebookConnect登录时,我使用FacebookGraphAPI提取基本信息 现在,我应该(在数据库级别)区分这两种类型的用户吗?(例如,为FacebookUser创建单独的表。我还听说了表继承的问题。这是我的情况吗?) 这两种登录选项的最佳做法是什么? 我

我的网站支持两种登录方式(类似于包括stackoverflow在内的许多网站)

  • 注册您的电子邮件和密码,然后登录
  • 使用Facebook connect登录
  • 所以我得到了一个
    User
    类(我使用的是Ebean[JPA])。
    当用户使用FacebookConnect登录时,我使用FacebookGraphAPI提取基本信息

    现在,我应该(在数据库级别)区分这两种类型的用户吗?(例如,为
    FacebookUser
    创建单独的表。我还听说了表继承的问题。这是我的情况吗?)

    这两种登录选项的最佳做法是什么?

    我要提到的是,我希望在不久的将来使用Google帐户作为登录方式。

    我建议您使用一个包含用户基本信息的
    表,不管注册机制如何(下面是一个简单的示例):

    id |姓名|电子邮件|创建日期|

    不同的服务将有不同的身份验证方法,因此最好为每个服务都有不同的表:

    授权facebook:

    id | facebook | id |访问|令牌|

    授权网站:

    id |密码|

    等等。通常,使用多个服务登录的功能是为了方便,您可能希望以某种方式集中您的用户。请记住,关于身份验证,您将在用户表中拥有主id,但根据用户用于连接的服务,您将拥有不同的验证方法。对于Facebook,您可以在身份验证后检查Facebook_id,查看您的哪些用户登录。上面的模式允许您向用户提供连接其他服务的服务,这可能会有所帮助

    一个具体的例子是,如果你有基本的个人资料,但你想让他们展示他们的GitHub回购协议,那么你可以让他们同时与Facebook朋友联系

    表继承听起来有些过分,而且很可能在不同的数据库系统中实现不同。所有这些表格的视图可能更合适