Node.JS 验证 Google 身份验证令牌

2024-02-07

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

我在验证从应用程序收到的 Google 令牌时遇到问题,因为我尝试加载的模块似乎返回了错误。

用于验证此令牌的模块是护照谷歌令牌 https://www.npmjs.com/package/passport-google-token。用于初始化该模块并检查令牌的代码如下:

索引.js 文件

'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;

护照.js 文件

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));
  }));
}

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

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

据我所知,调用构造函数时存在问题,但我不确定问题是什么。

请你帮助我好吗?

谢谢。


尝试更改您的导入代码

import GoogleTokenStrategy from 'passport-google-token';

to

import { Strategy as GoogleTokenStrategy } from 'passport-google-token';

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node.JS 验证 Google 身份验证令牌 的相关文章

  • express.js 示例应用程序[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在启动一个express js 项目 我想查看现有大型应用程序的代码 尤其是它们的文件系统结构 有
  • 如何在 Plesk Obsidian 上为 Node.js 管理器添加新的 NodeJS 版本?

    Since Plesk 黑曜石 v18 x 它不像以下程序那样工作这个答案 Plesk Onyx https stackoverflow com a 46846077 10824494现在我无法添加新版本的 NodeJS plesk sbi
  • 服务器发现和监控引擎已弃用

    我在 Node js 应用程序中使用 Mongoose 这是我的配置 mongoose connect process env MONGO URI useNewUrlParser true useUnifiedTopology true u
  • 如何在 Electron 应用程序上获得圆角?

    我目前正在尝试在我正在制作的电子应用程序上获得圆角 我已经尝试了目前在线提供的几乎所有解决方案 但没有一个有任何区别 如何让 Electron 应用程序变得圆润 制作无框透明窗 const myWindow new BrowserWindo
  • 如何通过setTimeout函数定期打印数字?

    var i 0 function counter for i i lt 100 i setTimeout gt console log i 2000 counter 我想以 2 秒的间隔打印 i 但它立即打印 每次打印调用只需要几微秒 为什
  • websockets 如何处理同一浏览器的两个选项卡

    I have 1 个 PHP 服务器 提供 http 请求 和 1 node js 发布更新的数据消息 每个连接都带有 websocket php 服务器设置其 cookie 在一个浏览器中 此 cookie 可在所有选项卡中使用 当浏览器
  • 使用express.js动态加载路线

    我使用express js作为网络服务器 并且想要一种简单的方法来将所有 app get 和 app post 函数分开以分隔文件 例如 如果我想为登录页面指定 get 和 post 函数 我希望在动态加载的路由文件夹中有一个 login
  • Node.js - 使用 XHR 进行强大的上传

    我尝试实现一个简单的 XHR 上传到 Node js 通过强大 https github com felixge node formidable 问题是如果我设置 xhr setRequestHeader Content Type mult
  • 如何使用socket.io发送图像文件(二进制数据)?

    我无法从以下位置发送数据Android Client to NodeJS Server I use Socket IO 客户端 https github com socketio socket io client java我的客户端中的ja
  • Node.js 如何读取一个文件,然后使用两个单独的函数写入同一个文件?

    我想要做的是读取文件 然后在写入文件时能够使用该信息执行其他操作 例如 读取文件 写入文件并同时执行MD5哈希 数字签名等 我可以使用 fs readfile 和 fs writefile 作为一项操作 只需将文件从 Web 服务器复制到我
  • 为 MongoDB 中的对象数组建立索引

    我有一个巨大的电子邮件转储 我正在尝试在 MongoDB 中存储和查询它 有 160 万封电子邮件 每封电子邮件都存储为节点模块 https github com andris9 mailparser它将原始电子邮件解析为漂亮的 Javas
  • 如何对 NestJS 中的控制器应用防护进行单元测试?

    我在 NestJS 中配置了一个控制器 我想检查是否设置了适当的防护 有人有如何完成此操作的示例吗 这个 删节的 示例作为一个应用程序可以正常工作 所以我只是在测试指导之后 您会注意到在用户测试中有一些我正在调用的测试Reflect get
  • Strongloop 环回 如何使用路由进行静态服务?

    我想做类似的事情 server js app use client loopback static dirname client using middleware json 但该示例仅适用于根 files loopback static p
  • 无法从 bash 脚本使用 nvm

    我正在尝试编写一个 shell 脚本来自动设置我的开发环境 安装 python nvm node mongo 等 我正在使用 nvm 来安装 Node js 它告诉您关闭并重新打开终端以开始使用 nmv 命令 我尝试获取 bashrc 和
  • 如何使 fs.readFile 异步等待?

    我这里有这个 NodeJS 代码 它读取文件夹并处理文件 该代码有效 但它仍然是先打印所有文件名 然后只读取文件 如何获取一个文件 然后先读取该文件的内容 而不是先获取所有文件 async function readingDirectory
  • 如何在socket.io Nodejs服务器上列出房间

    在问题取得进展后如何创建socket io多播组 https stackoverflow com questions 6616922 how to create socket io multicast groups 6624604 6624
  • 如何使用 Node.js 解析 JSON? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我应该如何使用 Node js 解析 JSON 是否有一些模块可以安全地验证和解析 JSON 你可以简单地使用JSON parse h
  • 使用mockery和sinon模拟类方法

    我正在学习使用带有 sinon 的节点模块模拟进行单元测试 仅使用模拟和普通类 我就可以成功注入模拟 不过 我想注入一个 sinon 存根而不是一个普通的类 但我在这方面遇到了很多麻烦 我试图嘲笑的班级 function LdapAuth
  • 使用 Node.js 访问用 C++ 编写的 SDK

    我有一个用 C 语言编写的 SDK 可以与我的扫描仪设备进行通信 我需要开发一个可以访问扫描仪设备的电子应用程序 我知道有很多库可用于扫描仪 但我想使用这个 SDK 因为它允许我访问设备的完整功能 而且它是由设备制造商提供的 那么 有没有什
  • 如何修复语法错误:无法在模块外部使用 import 语句?

    我对这一切都很陌生 我正在尝试将 Node Typescript 后端添加到我的 Angular 项目中 但是导入express后总是报错 ERROR SyntaxError Cannot use import statement outs

随机推荐

  • 将父范围值传递到 Angular 中的 ng-repeat 循环中

    这应该是一个非常简单的问题 但我发现的所有解决方法都很复杂 我在模板中使用 ng repeat 循环遍历对象数组 如下所示 div class row fluid message subject campaign name div 由于 n
  • CakePHP 与 Google 的 OAuth

    我想在我的 cakePHP 应用程序中使用 Google OAuth 让用户使用他们的 google 帐户登录 我查看了以下组件 http code 42dh com oauth http code 42dh com oauth 不知怎的
  • 适用于 Android 的 VoIP 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要在我的 Android 应用程序中集成 VoIP 服务 有没有免费的 最好的开源 库 我需要图书馆至少允许通过互联网进行语音通话 而
  • 重写 Android 方法时,Eclipse 插入 arg0、arg1 等而不是正确的参数名称

    当我在 Eclipse 中重写 Android 类的方法时 我得到无用的参数名称 如 arg0 arg1 等 例如 当重写来自SQLiteOpenHelper I get Override public void onCreate SQLi
  • 如何防止浏览器标题中出现 blob + guid

    基本上 我正在做的是在服务器上生成一个 PDF 文件并通过 javascript 在浏览器中显示它 如下所示 file new window Blob data type application pdf var fileUrl URL cr
  • Safari 添加尾部斜杠

    我有一个 ASP NET 网站 它使用 URLRewrite 2 删除 URL 中的尾部斜杠 我们注意到 Mac 上的 Safari 不遵守此规则 它始终在 URL 中留下尾部斜杠 SEO Moz 显示两个 URL 这似乎是潜在的重复内容问
  • 为什么不再有 PECL 扩展(例如 pecl_http)的 Windows 二进制文件?

    我正在开发一个在 Windows 上运行的 PHP 项目 能够使用 pecl http 而不是使用 cURL 并重新发明轮子来完成 pecl 扩展所做的所有很酷的事情 例如解析标头 会非常方便等等 我在所有地方 包括 PHP 站点 都读到
  • Kafka简单消费者间歇性丢失消息

    我有一个 Kafka 应用程序 我一直在其中使用 kafka console consumer sh 消费消息 如下所示 kafka console consumer sh zookeeper zookeeperhost 2181 topi
  • Scikit 学习如何打印混淆矩阵标签?

    所以我使用 sci kit learn 对一些数据进行分类 我有 13 个不同的类值 类别来对数据进行分类 现在我已经能够使用交叉验证并打印混淆矩阵 但是 它只显示 TP 和 FP 等 没有类标签 所以我不知道哪个类是什么 下面是我的代码和
  • 如何在局域网中找到我的服务器?

    我有两个自己的 C 和 Java 应用程序 服务器和客户端 它既在一个局域网内 又可以通过指定的端口传输数据 我想让客户端可以找到服务器的IP 但怎么办呢 使用地址掩码枚举所有可能的 IP 坏主意 这会花费很多时间 可能存在某种方式 我可以
  • 在控制器中找不到名称空间内的 Ruby on Rails 模型

    我是 Rails 新手 无法解决这个问题 我有一个控制器 Admin Blog EntriesController 定义在app controllers admin blog entries controller rb 我有一个模型叫 Bl
  • 无法在 Ubuntu 22.04 操作系统上通过 vscode sftp 扩展连接到 AWS EC2 服务器

    我曾经连接 Linode 和 GCP 提供的远程服务器 并通过 Sftp 扩展使用 Visual Studio Code 一切正常 但是 使用相同的配置集 我无法连接到我的 Aws EC2 服务器 以下是sftp json 敏感信息已更改
  • 如何将多个属性传递到 Angular.js 属性指令中?

    我有一个属性指令限制如下 restrict A 我需要传入两个属性 一个数字和一个函数 回调 使用指令在指令中访问它们attrs object 如果指令是元素指令 则受限制 E 我可以这样
  • std::call_once 是无锁的吗?

    我想知道 std call once 锁是否已释放 There https codereview stackexchange com questions 117468 stdonce flag and stdcall once implem
  • C# SSL 安全套接字

    我有一个用 C 编写的 运行良好的通信器应用程序 现在我需要实现与服务器的安全连接 我尝试将 Socket 和 TcpClient 对象更改为 SslStream 但出现了一些错误 首先 我使用 makecert 生成了一个 cer 证书
  • 将方法作为参数传递与直接调用方法

    我在一些示例中看到了作为参数传递的方法 如果我可以从另一种方法调用一种方法 为什么我应该将方法作为参数传递 这个设计背后的目的是什么 从一种方法调用另一种方法 使用委托或将方法作为参数传递Action 将方法作为参数传递可用于防止依赖和耦合
  • 如何仅使用 CSS 来圆化我的 div 标签区域的角?

    我使用 div 标签来定义网页中的区域 我设置了所有明显的东西 如背景 大小 填充等 但它都是非常方形的 我该如何使用onlyCSS 圆角 这里有一个简单的 HTML 文档来演示如何仅通过 CSS 来实现它
  • 如何在没有浏览器检测的情况下识别“输入”事件中的错误行为?

    我将从问题开始 当特定浏览器的某个功能的实现有错误 并且您的 JavaScript 需要知道当前浏览器是否有该有错误的实现 以便它可以使用替代策略时 如何在不进行浏览器类型嗅探的情况下确定该实现是否有错误 这通常被认为是不好的 整个情况是这
  • 将纹理复制到纹理

    我已经完成了 2 个使用共享资源的程序 在 SlimDX 和 DirectX10 上运行 一个程序将在 3D 网格上显示共享纹理 第二个程序将加载图像作为纹理 到目前为止 每次从新图像更新纹理时 我都需要传递共享处理 现在 有没有一种方法可
  • Node.JS 验证 Google 身份验证令牌

    我正在尝试使用 Express JS 框架构建 Node JS REST 服务器 该框架为移动应用程序集成了 Google 身份验证 使用的 Node JS 版本是 0 12 7 我在验证从应用程序收到的 Google 令牌时遇到问题 因为