如何将Google oAuth与Node.js后端和Angular前端一起使用?

如何将Google oAuth与Node.js后端和Angular前端一起使用?,node.js,angular,google-oauth,Node.js,Angular,Google Oauth,我在后端使用Node.js,每次登录时为用户创建一个令牌angularx社交登录package使Google OAuth与Angular的集成变得非常容易,但如何将其与API结合使用呢?成功登录后,Google返回带有令牌的用户信息。我想将此信息发送到后端并登录用户,但为此,我需要创建一个接收电子邮件地址并登录用户的路由。这将返回不安全的JWT令牌。我的意思是说,任何人都可以在没有谷歌认证的情况下访问路由并生成令牌 我正在寻找开发人员如何实现这一点的想法 我找到了由谷歌管理的Node.js的go

我在后端使用Node.js,每次登录时为用户创建一个令牌
angularx社交登录
package使Google OAuth与Angular的集成变得非常容易,但如何将其与API结合使用呢?成功登录后,Google返回带有令牌的用户信息。我想将此信息发送到后端并登录用户,但为此,我需要创建一个接收电子邮件地址并登录用户的路由。这将返回不安全的JWT令牌。我的意思是说,任何人都可以在没有谷歌认证的情况下访问路由并生成令牌


我正在寻找开发人员如何实现这一点的想法

我找到了由谷歌管理的Node.js的
googleauth库
客户端包

详情如下:

  • 使用Angular登录用户
  • 将idToken发送到后端
  • 验证令牌和对消息的响应
  • Node.js:

    exports.googleLogin = function(req, res, next) {
      //verify the token using google client
      return googleClient
        .verifyIdToken({
          idToken: req.body.token,
          audience: config.google.clientID
        })
        .then(login => {
          //if verification is ok, google returns a jwt
          var payload = login.getPayload();
          var userid = payload['sub'];
    
          //check if the jwt is issued for our client
          var audience = payload.aud;
          if (audience !== config.google.clientID) {
            throw new Error(
              'error while authenticating google user: audience mismatch: wanted [' +
                config.google.clientID +
                '] but was [' +
                audience +
                ']'
            );
          }
          //promise the creation of a user
          return {
            name: payload['name'], //profile name
            pic: payload['picture'], //profile pic
            id: payload['sub'], //google id
            email_verified: payload['email_verified'],
            email: payload['email']
          };
        })
        .then(user => {
          return res.status(200).json(user);
        })
        .catch(err => {
          //throw an error if something gos wrong
          throw new Error(
            'error while authenticating google user: ' + JSON.stringify(err)
          );
        });
    };
    
    花一个小时,看这段视频——它解释了你所追求的流程。