缺少必需的参数:scope Passport.js,express

问题描述

我在我的应用程序中使用 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',{ 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` 不匹配。固定的。

解决方法

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...