Node.js OAuth2(Passport.js)登录应该不会失败,对吗? 如果我使用Oauth 2登录Google(使用Passport.js/Express),并且用户以前从未访问过我的站点,则会发生以下情况: 选项1:首次用户

Node.js OAuth2(Passport.js)登录应该不会失败,对吗? 如果我使用Oauth 2登录Google(使用Passport.js/Express),并且用户以前从未访问过我的站点,则会发生以下情况: 选项1:首次用户,node.js,express,oauth,oauth-2.0,passport.js,Node.js,Express,Oauth,Oauth 2.0,Passport.js,用户->单击Google Oauth 2登录->后台工作发生->用户已登录 选项2:返回用户 用户->单击Google Oauth 2登录->后端操作->用户登录并从数据库检索用户数据 选项3:用户不能登录到他们的Google帐户 用户->单击Google Oauth 2登录->无法登录,因为用户忘记了他的Google密码/电子邮件 然而,前两个选项将是相同的,除了选项1将发布到数据库,选项2将从数据库获取。 然而,第三个选项不是我的问题,当用户试图登录谷歌时,他们已经被重定向到accou

用户
->
单击Google Oauth 2登录
->
后台工作发生
->
用户已登录


选项2:返回用户 用户
->
单击Google Oauth 2登录
->
后端操作
->
用户登录并从数据库检索用户数据


选项3:用户不能登录到他们的Google帐户 用户
->
单击Google Oauth 2登录
->
无法登录,因为用户忘记了他的Google密码/电子邮件


然而,前两个选项将是相同的,除了选项1将发布到数据库,选项2将从数据库获取。 然而,第三个选项不是我的问题,当用户试图登录谷歌时,他们已经被重定向到
accounts.Google.com/sign/(…)
。我想说的是,如果出现选项3,我真的不需要为这种情况编写代码

因此,无论是第一次用户还是返回用户,如果用户通过oauth 2访问我的站点,要么他们成功登录到Google,我将获得数据,要么他们无法登录,用户的任何信息都不会发送给我,但无论哪种方式,我从技术上来说都不必处理该操作失败,因为它永远不会


为了说明一些情况,我之所以问这个问题,是因为我正在编写反序列化代码,并且我意识到
done(null,user)
就足够了,因为反序列化永远不会出错,对吗?

选项3

您是对的,您不必在这里编写任何代码,因为您已经外部化了登录到授权服务器

选项1

用户通过POST注册,该POST在授权服务器中创建用户,但不在您自己的数据中创建用户

选项2

登录后,通常会将访问令牌发送到API以获取用户信息。如果需要,您可以在自己的数据库中创建用户(如果该数据库尚不存在)

错误处理

通常,在某些情况下,授权服务器可能会向您返回错误响应,在这种情况下,授权服务器将为您提供代码和描述,如中所示

有关用户数据的更多信息


我的博客文章进一步详细探讨了如何识别新用户和现有用户,以防有用。

谢谢,我很感激!也许你也可以回答这个问题?