“使用Google注册/登录”的Nodejs后端例程是什么?

问题描述 投票:0回答:1

我正在使用Express Node.js后端+ React前端进行设置,并试图实现“使用Google注册/登录”功能,但是在用户通过身份验证后,我不理解要在数据库中存储什么。在普通的“用电子邮件注册”方法中,我在注册时将电子邮件+密码发送到后端,并在用户登录时检查电子邮件和密码是否匹配。

但是,如果有人在Google中注册,我不知道要在数据库中存储什么。我已经通过遵循前端的tutorial来实现与google一起使用的google auth的一部分,这是我的代码:

import * as queryString from 'query-string';

const stringifiedParams = queryString.stringify({
  client_id: 'MY_CLIENT_ID'
  redirect_uri: 'http://localhost:8000/protected_home',
  scope: [
    'https://www.googleapis.com/auth/userinfo.email',
    'https://www.googleapis.com/auth/userinfo.profile'
  ].join(' '), // space seperated string
  response_type: 'code',
  access_type: 'offline',
  prompt: 'consent'
});

const googleLoginUrl = `https://accounts.google.com/o/oauth2/v2/auth?${stringifiedParams}`;

return (
  <a href={googleLoginUrl}>Login with Google</a>
)

但是接下来呢?我已经成功通过身份验证过程,并重定向回protected_home页面。但这仅表示该用户是google用户,我应该在后端中存储什么样的信息,以便表明该用户已使用该google帐户在我的后端中注册了一个帐户?

而且,是否可以将上述逻辑移至后端?由于Google会像redirect_uri一样重定向回我的http://localhost:8000/protected_home?code=CODE_IS_HERE,因此我需要浏览器以提取CODE_IS_HERE中的信息。因此,似乎无法将登录逻辑移至后端,有什么解决方法吗?

node.js reactjs google-oauth google-login
1个回答
0
投票

您需要保存的是用户的唯一ID,他的电子邮件或电话以及项目的其他一些用户数据。这仅仅是为了知道用户是否已经注册,或者要知道后端的当前用户。

[从后端,您可以只设置一个中间件来验证从Google分配的令牌。然后,您将获得用户的ID,并且可以从数据库中找到用户,如果存在,则说明该用户已通过身份验证。

© www.soinside.com 2019 - 2024. All rights reserved.