Node.JS验证Google身份验证令牌 [英] Node.JS verify Google Authentication token

查看:469
本文介绍了Node.JS验证Google身份验证令牌的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用Express.JS框架构建一个Node.JS REST服务器,该框架集成了针对移动应用程序的Google身份验证。使用的Node.JS版本是0.12.7。

I am trying to build a Node.JS REST server using the Express.JS framework that integrates Google authentication for mobile applications. The Node.JS version used is 0.12.7.

在验证从应用程序接收到的Google令牌时,我遇到了问题,因为我正在尝试的模块

I am having a problem when verifying the Google token received from the application, as it seems that the module I am trying to load returns an error.

用于验证此令牌的模块为 passport-google-token 。用于初始化该模块并检查令牌的代码如下:

The module used to verify this token is passport-google-token. The code used to initialize this module and check the token is as follows:

index.js文件

index.js file

'use strict';

import express from 'express';
import passport from 'passport';
import {setTokenCookie} from '../../auth.service';

var router = express.Router();

router
  .post('/callback', passport.authenticate('google-token'), setTokenCookie);

export default router;

passport.js文件

passport.js file

import passport from 'passport';
import GoogleTokenStrategy from 'passport-google-token';

export function setup(User, config) {
  passport.use(new GoogleTokenStrategy({
    clientID: config.google.clientID,
    clientSecret: config.google.clientSecret
  },
  function(accessToken, refreshToken, profile, done) {
    User.findOne({'google.id': profile.id}).exec()
      .then(user => {
        if (user) {
          console.log(user);
          return done(null, user);
        }

        user = new User({
          name: profile.displayName,
          email: profile.emails[0].value,
          role: 'user',
          username: profile.emails[0].value.split('@')[0],
          provider: 'google',
          google: profile._json
        });
        console.log(user);
        user.save()
          .then(user => done(null, user))
          .catch(err => done(err));
      })
      .catch(err => done(err));
  }));
}

当我尝试启动服务器时,出现以下错误:

When I try to start the server I am receiving the following error:

D:\Work\SoftwareUp\softwareup_android_demo\server\server\auth\google\mobile\passport.js:19
  _passport2.default.use(new _passportGoogleToken2.default({
                         ^
TypeError: object is not a function
    at Object.setup (D:/Work/SoftwareUp/softwareup_android_demo/server/server/auth/google/mobile/passport.js:5:16)
    at Object.<anonymous> (D:/Work/SoftwareUp/softwareup_android_demo/server/server/auth/index.js:13:37)
    at Module._compile (module.js:460:26)
    at loader (D:\Work\SoftwareUp\softwareup_android_demo\server\node_modules\babel-register\lib\node.js:144:5)
    at Object.require.extensions.(anonymous function) [as .js] (D:\Work\SoftwareUp\softwareup_android_demo\server\node_modules\babel-register\lib\node.js:154:7)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.exports.default (D:/Work/SoftwareUp/softwareup_android_demo/server/server/routes.js:15:20)
    at Object.<anonymous> (D:/Work/SoftwareUp/softwareup_android_demo/server/server/app.js:27:1)
    at Module._compile (module.js:460:26)
    at loader (D:\Work\SoftwareUp\softwareup_android_demo\server\node_modules\babel-register\lib\node.js:144:5)
    at Object.require.extensions.(anonymous function) [as .js] (D:\Work\SoftwareUp\softwareup_android_demo\server\node_modules\babel-register\lib\node.js:154:7)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.<anonymous> (D:\Work\SoftwareUp\softwareup_android_demo\server\server\index.js:12:28)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
Stopping Express server

从我发现的事实来看,调用构造函数时存在问题,但是我不确定那是什么问题。

From what I have figured there is a problem when calling the constructor but I am not sure what that problem is.

可以请你帮我吗?

谢谢。

推荐答案

尝试从

从'passport-google-token'导入GoogleTokenStrategy更改导入代码;

import {策略为GoogleTokenStrategy}来自'passport- google-token';

这篇关于Node.JS验证Google身份验证令牌的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆