使用Laravel Socialite注册用户并重定向到表单以填写更多数据?

问题描述

我已经按照this article中的描述,与Google一起实施了Laravel Socialite。到目前为止,一切正常。

但是,我想进行一些更改并自定义注册第一次通过社交网络登录用户的过程。我的Laravel项目正在使用昵称,例如在论坛中。当然,这些昵称必须是唯一的。

我现在的目标是将首次通过社交网络登录用户重定向到可以输入昵称的表单,并在提交该表单时创建用户。我对如何实现此目标有些困惑,需要您的建议。

问题是,我必须从例如Google,将用户重定向一个表单,在该表单中输入昵称并提交表单。但是此表单必须包含所有数据,还包括我从Google那里获得的数据,以便创建具有昵称,电子邮件,头像,提供商(例如google,facebook等)和提供商ID的用户

我现在没有在此处粘贴任何代码,因为我的代码看起来与上面链接文章中所述完全相同!

亲切的问候!

解决方法

我不知道您的设置类型,但会提出非常有根据的建议,并且会以您对laravel不熟悉的假设来回答这个问题。

  1. 当响应来自第三方的社交名流时,您必须将信息存储在会话中,以避免如果用户刷新浏览器而丢失数据,则应将其设置为在很短的时间内过期

  2. 您将需要一个中间件,该中间件将重定向到注册完成表格,如果在会话中设置了用于存储从Socialite接收的用户数据的密钥,则用户将提供其昵称。该行为应与laravel的验证电子邮件中间件完全一样,以确保注册过程处于活动状态时,用户不会访问网站的任何其他部分。

  3. 在用户填写此表单并提交之后,您现在可以验证其输入,从会话中检索Socialite数据,然后根据需要创建用户。完成操作后,请不要忘记从会话中删除数据,以避免激活中间件。