在我目前的应用程序中,我想为用户提供通过密码或任何社交网络或开放ID平台连接它们的可能性。
如果他们将自己的帐户关联到我的应用程序,我也会在他们的墙上发布消息(Facebook,Twitter,主要是嗡嗡声)。
我面临的问题是我如何在数据库中组织我的表。
这是我将如何做,但没有任何信念:
User(first_name, last_name, email)
LocalUser(password, user_id)
FacebookUser(token, user_id)
GoogleUser(token, user_id)
EtcUser(...)
如果用户通过Facebook连接,我将填写用户表中的所有数据,然后他就可以将我的应用程序连接到其他网络(如Google和Twitter)。
但是这个实现的问题是如果用户通过Facebook连接一次,使用应用程序而不连接到其他社交层,然后通过谷歌连接自己,应用程序将无法识别它是同一个人并将创建一个新的帐户,从头开始。
此外,会话表(FacebookUser,GoogleUser等)和链接帐户的表可能会有所不同(可能是访问社交网络的令牌和使用该应用程序的密钥不同?)
我已经有一个像这样的会话表:
// Maybe I should add a new column for identifying from which type come the token (Local, Facebook, Google, etc)
Session(date, ip, token, user_id)
你认为这种方法好吗?你有更好的吗?
谢谢!非常!