获取缺少必需参数:范围 Passport.js,快递

Posted

技术标签:

【中文标题】获取缺少必需参数:范围 Passport.js,快递【英文标题】:Getting Missing required parameter: scope Passport.js, express 【发布时间】:2021-05-07 10:58:35 【问题描述】:

我在我的应用程序中使用 Passport.js 和 express 来使用 Google Oauth 登录。但是当我尝试登录时,我收到以下错误:invalid parameter value for redirect_uri: Missing authority: http:localhost:3000/google/callback 当我访问localhost:3000/google/callback 时,我收到Missing required parameter: scope。相关代码:

const express = require("express");
const cors = require("cors");
const mongoose = require("mongoose");
const passport = require("passport");
const app = express();
const port = process.env.PORT || 3000;
require("dotenv").config();
require("./passport-setup")

app.use(passport.initialize())
app.use(passport.session())

app.get('/success', (req, res) => 
  res.render("/profile.html")
)

app.get('/login', passport.authenticate('google',  scope: 'email' ));
app.get('/google/callback', passport.authenticate('google',  failureRedirect: '/failed' ),
  function(req, res) 
    // Successful authentication, redirect home.
    res.redirect('/success');
  
);

护照配置(相关代码):

const passport = require("passport");

const GoogleStrategy = require("passport-google-oauth2").Strategy

passport.use(new GoogleStrategy(
    clientID: process.env.GOOGLE_CLIENT_ID,
    clientSecret: process.env.GOOGLE_CLIENT_SECRET,
    callbackURL: process.env.CALLBACK_URL,
    passReqToCallback: true
,function(request,accessToken,refreshToken,profile,done)
    console.log(profile)
    return done(null, profile)


))

PS:我找到了this answer,但我不知道他所说的“JSON 密钥”是什么意思。也许 API 更新了。

任何帮助将不胜感激。 提前致谢。


编辑

我提供给 google 的回调 url 与我的 `app.get` 不匹配。固定的。

【问题讨论】:

【参考方案1】:

我的回调网址是http:localhost:3000/google/callback

将其设置为 /gooogle/callback 对我有用。

【讨论】:

以上是关于获取缺少必需参数:范围 Passport.js,快递的主要内容,如果未能解决你的问题,请参考以下文章

带有 Passport 的 Node.js 身份验证:如果缺少字段,如何闪烁消息?

获取 TypeError:__init__() 缺少 1 个必需的位置参数:尝试在包含条目的子表之后添加父表时出现“on_delete”

使用 Swift 3 时出现错误“缺少必需的参数:grant_type”

Cloudinary\Error:缺少必需的参数 - 文件

“fit() 缺少 1 个必需的位置参数:'y'”错误

请求缺少必需的参数,包含无效的参数值