首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Passport在NodeJS后端无法正常工作

Passport在NodeJS后端无法正常工作
EN

Stack Overflow用户
提问于 2020-07-29 17:58:18
回答 1查看 50关注 0票数 1

我是NodeJS领域的新手,我的Javascript知识可以准确地用noob+来描述。不要因为我在这么简单的事情上失败而嘲笑我!

我已经尝试了几天使NodeJS后端支持使用Passport的谷歌授权。

该计划是将响应重定向到某个页面,但由于某些原因无法工作。

相关代码如下:

代码语言:javascript
运行
复制
const GOOGLE_CLIENT_ID = "...........................................";
const GOOGLE_CLIENT_SECRET = "..................";
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
passport.use(new GoogleStrategy({
        clientID: GOOGLE_CLIENT_ID,
        clientSecret: GOOGLE_CLIENT_SECRET,
        callbackURL: "http://localhost:3000/auth/google/callback"
    },
    function (token, tokenSecret, profile, done) {
        console.log(profile.id);}
));

代码语言:javascript
运行
复制
const express = require('express');
const cors = require('cors');
const passport = require('passport');
const router = express.Router();
const passportConfig = require('./Config/passport.config');
const blogapp = express();

blogapp.use(cors()); 
blogapp.use(express.static('public'));
blogapp.use(passport.initialize());
blogapp.use(passport.session());
blogapp.use(router);
.
.
.
.
.
.

blogapp.get('/auth/google',
    passport.authenticate('google', {scope: ['https://www.googleapis.com/auth/plus.login' ]}));

blogapp.get( '/auth/google/callback',
    passport.authenticate( 'google', {
        successRedirect: '/',
        failureRedirect: '/loginfailed'
    }));

它会成功打印profile.id,但不会继续重定向到其他页面。相关函数的另一个版本是:

代码语言:javascript
运行
复制
blogapp.get('/auth/google/callback',
    passport.authenticate('google', {failureRedirect: '/loginfailed'}),
     (req, res) => {
        res.redirect('/');
    });

但也不起作用。

我还尝试了几个版本的GoogleStrategy,包括那些返回done(parameter1,parameter2)的版本,但是什么都没有发生。它只打印id,然后卡住,不会进入下一页。

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-01 02:36:37

Passport需要知道通过使用策略回调中的done()助手成功地对用户进行了身份验证。

代码语言:javascript
运行
复制
    function (token, tokenSecret, profile, done) {
        console.log(profile.id);
        done(null, profile);
    }

有关验证回调和done函数的更多信息:http://www.passportjs.org/docs/configure/#verify-callback

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63151039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档