错误:invalid_request 缺少必需参数:范围(Restify 和 Passportjs w/ Google OAuth2)

2024-04-19

因此,我在使用 Restify 和 Passportjs(Google OAuth2 策略)时遇到了 Node.js 应用程序的问题。当我使用passport.authenticate(),它给了我以下错误:

400. 这是一个错误。
错误:无效_请求
缺少必需参数:范围

几年前我发现了关于同一件事的另一个问题(invalid_request 缺失:在 Google Oauth2 上使用 Google Passportjs 的范围 https://stackoverflow.com/questions/34931847/invalid-request-with-missing-scope-using-google-passportjs-on-google-oauth2?newreg=02cf8c8315244b2e8b2a1aefcb4ebc3a)。作者说他最终自己修复了这个问题,但没有发布修复结果。

还有其他人遇到过这个问题并能够解决它吗?我想不通。这是我的代码:

authController.js

var passport = require('passport');
var GoogleStrategy = require('passport-google-oauth20').Strategy;

var auth = {
  google: {
    clientID: '<ID>',
    clientSecret: '<SECRET>',
    callbackURL: 'https://localhost:8080/auth/google/return',
    scope: ['profile', 'email']
  }
};

passport.use(new GoogleStrategy({
    clientID: auth.google.clientID,
    clientSecret: auth.google.clientSecret,
    callbackURL: auth.google.callbackURL
}, function(accessToken, refreshToken, profile, cb) {
  return cb(null, profile.id);
}));

module.exports.authenticate = passport.authenticate('google', { scope: auth.google.scope });
module.exports.isAuthenticated = passport.authenticate('google', { successRedirect: '/hello/succeed', failureRedirect: '/hello/fail' });

服务器.js

var restify = require('restify'),
    fs = require('fs'),
    bodyParser = require('body-parser'),
    authController = require('./controllers/authController');

// Placeholder handler.
function respond(req, res, next) {
  res.send('hello ' + req.params.name);
  return next();
}

// Create server.
var api = restify.createServer({
  certificate: fs.readFileSync('server.crt'),
  key: fs.readFileSync('server.key'),
  name: 'BQ:IQ Question Writer'
});

// Setup authentication
api.get('/auth/google', authController.authenticate);
api.get('/auth/google/return', authController.isAuthenticated);

// Setup routes.
api.get('/hello/:name', respond);
api.head('/hello/:name', respond);

api.listen(8080, function() {
  console.log('%s listening at %s', api.name, api.url);
});

初始化服务器后我似乎缺少以下代码:

api.use(restify.plugins.queryParser({ mapParams: false }));

添加该行后,我就不再看到 Google 错误,并且该过程传回到我的代码。

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

错误:invalid_request 缺少必需参数:范围(Restify 和 Passportjs w/ Google OAuth2) 的相关文章

  • 如何在 Angular 2 中禁用浏览器后退按钮

    我正在使用 Angular 2 开发一个网站 有没有办法使用 Angular 2 禁用或触发浏览器后退按钮 Thanks 不确定这是否已经排序 但仍然发布答案 以供将来参考 为了解决这个问题 您基本上需要在应用程序组件中添加一个侦听器并设置
  • 如何在 jquery 上并排区分 mouseout/leave 事件?

    有没有办法知道鼠标事件是否已从元素的特定一侧离开 我的意思是 我有一个带有 mouseover mouseenter 事件的 DIV 并且我只想在鼠标离开到元素的左侧时触发该操作DIV 并向右 但如果它从底部或顶部离开 则不应触发任何操作
  • 使用 Javascript 防止刷新“跳转”

    我注意到 如果您在一个页面上并且向下滚动了很多 如果您刷新页面 大多数浏览器会将您跳回到您的位置 有什么办法可以防止这种情况发生吗 我研究了两个选项 但在 Webkit Firefox 上都不一致 window scrollTo 0 1 h
  • 我可以使用 javascript 捕获并保存网页的当前状态吗

    我需要使用 javascript 获取页面的全部内容并将其发送到服务器脚本以保存它 我想在用户使用 AJAX 和其他 javascript 工具对页面进行一些更改后执行此操作 我不想要某些元素的状态 我想基本上获取 body 标记内的所有内
  • JS中的递归排序

    在一次采访中 我被要求编写一个程序 算法来使用递归对数字数组进行排序 虽然我含糊地回答了它 但我尝试并想出了以下代码 您可以使用以下JSFiddle https jsfiddle net RajeshDixit 2u9mLegv 1 链接来
  • 表单验证后 isValid 保持 false

    我有一个自定义验证函数 但即使它没有返回错误 表单仍然无效 我将以下属性传递给 Formik validate import files gt return import files values length 0 import files
  • Momentjs 时区 - 获取特定时区时间的日期

    我正在尝试根据用户特定时区的 UTC 基准 创建日期 在本例中使用 momentjs momentjs 时区的 美国 洛杉矶 但是 我没有得到我期望的结果 var tempDate moment 1448841600000 moment 2
  • Express.js req.ip 正在返回 ::ffff:127.0.0.1

    我目前正在尝试获取所请求用户的IP 问题是IP正在返回 ffff 127 0 0 1代替127 0 0 1 我尝试使用trusted proxy选项 尽管不使用代理 和req ips是空白的 使用 4 x Express js router
  • 如何修复 Eslint 错误“prefer-destructuring”?

    我想像这样缩短 ES6 中的对象文字 const loc this props local 原因是loc foo 比打字容易得多this props local foo 但现在 ESLint 抱怨道 使用对象解构 prefer destru
  • Javascript:如何简化具有多个 OR 条件的 if 语句?

    很抱歉 如果我在写这篇文章时犯了错误 我是新来的 不知道这是如何工作的 希望我能尽快学会 我也是 JavaScript 新手 所以问题是 我有这个代码 elements js文件 我无法让它工作 放这个有用吗 if codePrompt c
  • 如何观察Firebase存储上传事件

    我有一个将照片上传到 Firebase 存储的 iOS 应用程序 以及一个连接到同一个 Firebase 的 Web 应用程序 有没有办法从网络上观察存储的变化 当上传照片时 只有iOS设备本身可以访问UploadTask 并且我没有看到o
  • javascript RegExp 的奇怪行为:相同的正则表达式产生不同的结果[重复]

    这个问题在这里已经有答案了 可能的重复 为什么 Javascript 中带有全局标志的 RegExp 会给出错误的结果 https stackoverflow com questions 1520800 why regexp with gl
  • 将数据发送到 parse.com 并更新 Angular $scope

    我正在将数据发送到 parse com 上的类 我想运行此函数并更新 scope无需重新加载视图 创建一个Programme运行下面的函数工作正常 但是有时在创建新程序后不会更新视图 并且需要刷新页面 当调用整个函数时 如底部所示 getP
  • 什么是 TypeScript?为什么我要用它代替 JavaScript? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 您能描述一下 TypeScript 语言是什么吗 它能做什么 JavaScript 或可用库不能做的事情 这让我有理由考虑它 我最初写
  • 如何将java数组列表转换为javascript数组? [复制]

    这个问题在这里已经有答案了 我们如何将 String 对象的 java arraylist 转换为 javascript 数组 这就是我正在做的事情 但我正在寻找更好的方法来做到这一点 我不想迭代数组列表 var myArray
  • 根据用户投票移动 div

    我是新来的 但我喜欢这个网站 我检查了其他类似的问题 但没有看到我要找的东西 我是一名音乐家 有一段时间我一直在做 每日之歌 每天写一首小歌 我想将歌曲发布为 div 在里面 li 在 div 中 我只想要一个简单的 mp3 播放器和一个
  • 如何以编程方式移动 OpenLayers Vector?

    API 文档为OpenLayers Feature Vector http dev openlayers org apidocs files OpenLayers Feature Vector js html说 Vector 本身根本没有方
  • 如何在托管的 VSO 构建代理中设置 Node.js 和 NPM 版本号?

    在 Visual Studio Online 中 您现在可以在生成定义的 常规 选项卡上设置生成依赖项 但是 有没有办法设置Node js和NPM的版本 托管构建代理当前似乎正在使用 Node js v0 12 7 和 NPM v2 11
  • Firebug 分析问题:“没有要分析的活动”

    我想用一些 javascript jQuery 尝试一些不同的选项 看看哪个是最快的 但是我无法让分析正常工作 这是我要测试的代码 this keypress function e console profile test retrieve
  • Java 将函数添加到 json 对象而不使用引号。

    我正在用 java 构建一个 json 对象 我需要将一个函数传递到我的 javascript 中并使用 jquery isFunction 对其进行验证 我遇到的问题是我必须将 json 对象中的函数设置为字符串 但 json 对象将周围

随机推荐

  • jquery中删除多个元素

    在我当前的代码中我有这样的 foo remove bar remove 有没有办法通过使用删除多个元素remove once 它不限于 remove 但只需用逗号分隔选择器 foo bar remove 多重选择器 选择器1 选择器2 选择
  • 如何调整 UIImageView 的大小以适应底层图像而不移动它?

    我有一个 UIImageView 其框架在加载图像之前设置 对于图像来说总是太大 因此 例如 当我尝试圆角时 什么也没有发生 如何调整框架大小 使其与底层图像的大小相同 同时确保 UIImageView 的中心点不会改变 如果更改 UIVi
  • CPython的静态对象地址和碎片

    I read 对于Python来说 if x 是存储x的内存地址 这是给定的id对象的属性永远不会改变 这意味着对象在其生命周期中始终存储在给定的内存地址中 这就引出了一个问题 虚拟 内存碎片怎么样 说一个物体A位于地址 1 有id1 占用
  • IIS7的工作进程是什么?

    我正在尝试在 Visual Studio 2008 中执行 附加到进程 进行调试 但我无法弄清楚要附加到哪个进程 帮助 事实上它仍然是 w3wp exe 您需要检查 显示所有会话中的进程 让它显示的选项 这也让我困惑了一段时间
  • 如果不调用notify(),等待线程会发生什么?

    如果不调用notify 等待线程会发生什么 这是虚假唤醒吗 If a waiting Thread is not notified通过致电notify or notifyAll 在所述线程正在等待的对象上 则可能会发生以下任一情况 the
  • Chrome 调试协议:HeapProfiler.getHeapSnapshot 忽略回调

    我正在开发一个测试套件 作为 Chrome 扩展实现 该套件使用 Chrome Chromium 的远程调试协议以编程方式获取和分析堆快照 因为Profiler 似乎不是公共协议的一部分 我正在使用这一页 http trac webkit
  • HTML 多选框

    我只是想知道下面的表格的名称是什么 我从早上就在谷歌上搜索 HTML 表单列表 但我在任何地方都找不到这种表单 谁能告诉我这个表单的确切名称以及它是否可以在 HTML 表单中使用 我只想在我的网站中添加这种形式 它适用于 HTML 还是我应
  • 将变量传递给 Google Cloud Functions

    我刚刚在 Beta Python 3 7 运行时中使用 HTTP 触发器编写了 Google Cloud Function 现在我试图弄清楚如何在调用函数时将字符串变量传递给函数 我已阅读文档 但没有找到任何相关内容 我的触发器类似于 ht
  • 如何在光线平行且不使用光线模式的情况下运行函数?

    After sudo pip3 install ray 我创建了一个函数foo 在射线装饰器中定义 import ray ray init ray remote def foo x print x 我希望能够使用foo并行和常规模式 忽略装
  • ViewModel 和 Service 类的实例化

    我试图理解 ViewModel 和 Service 类的实例化 并将其写下来供其他人使用 请在需要的地方更正 添加 ViewModel 和服务的实例化并不是以最常见的方式完成的 这是使用反射完成的 在 TipCalc 中 您有 public
  • 在特定日期触发 UILocalNotification

    我想开火UILocalNotification在特定日期 如果我使用这段代码 NSCalendar gregorian NSCalendar alloc initWithCalendarIdentifier NSGregorianCalen
  • 尝试理解 Pytorch 的 LSTM 实现

    我有一个包含 1000 个示例的数据集 其中每个示例都有5特征 a b c d e 我想喂7LSTM 的示例 以便它预测第 8 天的特征 a 阅读 nn LSTM 的 Pytorchs 文档 我得出以下结论 input size 5 hid
  • Akka 通过可堆叠行为拦截接收

    Akka 和 Scala 新手 请根据需要随意编辑问题 以便清楚地表达我在 Scala 和 Akka 领域的意图 在展示代码片段之前 这是我想要解决的问题 我本质上想开发一个通用模块 供我的团队在使用 Akka Actor 开发应用程序时使
  • Tcl正则表达式

    set d aa1 1 set d aa2 1 set d aa3 1 set d aa4 1 set d aa5 1 set d aa6 1 set d aa7 1 set d aa8 1 set d aa9 1 set d aa10 1
  • Fortran 读取混合文本和数字

    我正在使用 Fortran 90 读取包含以下格式数据的文件 number 125 var1 2 var2 1 var3 4 number 234 var1 3 var2 5 var3 1 我尝试了以下命令并且工作正常 read 2 tem
  • Ionic Jasmine:env.stopOnSpecFailure 编译成功后不是函数

    将 Ionic 与 jasmine karma 一起使用 在运行测试时 编译成功 但在 jasmine 仪表板中出现空屏幕 控制台中出现错误 以下教程 https leifwells github io 2017 08 27 testing
  • 受范数不等式约束的二次函数最小化

    我正在尝试解决以下不等式约束 给定 N 只股票的时间序列数据 我试图构建一个投资组合权重向量以最小化回报的方差 目标函数 min w T sum w s t e n T w 1 left w right leq C where w是权重向量
  • 从外部访问 Google 地图

    我有一些 javascript 代码 可以绘制 v3 GoogleMap 我想从外部访问地图对象 另一个js文件 是否有可能不创建额外的全局变量来引用地图 单独的 JS 文件在同一范围内加载和执行 因此无论您使用一个还是多个 JS 文件 都
  • 将参数从 tasklet 步骤添加到作业上下文,并在 Spring Batch 的后续步骤中使用

    目前 我使用 jobParameters 来获取 FlatFileItemReader 和 FlatFileItemWriter 的文件名 测试我的批次是可以的 但我的目标是读取某个目录中的文件 该目录中只有这个文件 并且文件名可能会改变
  • 错误:invalid_request 缺少必需参数:范围(Restify 和 Passportjs w/ Google OAuth2)

    因此 我在使用 Restify 和 Passportjs Google OAuth2 策略 时遇到了 Node js 应用程序的问题 当我使用passport authenticate 它给了我以下错误 400 这是一个错误 错误 无效 请