oauth2的数据库设计

时间:2016-01-19 04:02:38

标签: php laravel oauth

我有一个看起来像这样的用户表:

enter image description here

目前我的电子邮件设置为唯一身份。当用户尝试登录时,我会检查电子邮件和密码,如果匹配,我会发送一个令牌。但现在我想使用oauth提供程序(G +,Facebook,github等)启用登录。 为实现这一目标,我决定使用Laravel的社交网站插件。在文档中,它说:

Retrieving User Details

Once you have a user instance, you can grab a few more details about the user:

$user = Socialite::driver('github')->user();

// OAuth Two Providers
$token = $user->token;

// OAuth One Providers
$token = $user->token;
$tokenSecret = $user->tokenSecret;

// All Providers
$user->getId();
$user->getNickname();
$user->getName();
$user->getEmail();
$user->getAvatar();

我的问题是,一旦oauth成功,我如何在数据库中保存细节。 我应该在表格中做出哪些改变。

2 个答案:

答案 0 :(得分:0)

您也许可以查看此存储库:

https://github.com/lucadegasperi/oauth2-server-laravel

如果您不想使用该软件包,可以查看数据库迁移文件和控制器,以了解如何处理登录和注册。

答案 1 :(得分:0)

如果您不打算代表用户提出任何请求,您实际上甚至不需要保存OAuth访问权限 - 一旦社交身份验证通过,您就可以简单地记录用户。一个典型的流程:

  1. 查看用户是否已存在,例如。 $ user = User :: whereEmail($ user-> getEmail());

  2. 如果用户不存在,请使用User :: create([])创建一个,从社交网络中获取尽可能多的数据。如果用户存在,您可能希望使用社交网络中的值更新其头像/名称。

  3. 使用Auth :: login($ user);

  4. 登录用户

    如果您计划代表用户执行一些额外请求,则需要将访问令牌存储在某处(例如,在单独的数据库表中)。大多数社交网络都需要您保存一个长字符串 - 访问令牌,Twitter需要两个访问令牌和一个秘密。因此,您的表至少会包含:来自用户表的用户ID,社交提供商ID和访问令牌。

    如果您保存访问令牌,您可以代表用户执行API请求 - 检查他们的时间表,发布等。