Node.js passport google oauth:GooglePlusAPIError:Legacy People API尚未在项目中使用

Node.js passport google oauth:GooglePlusAPIError:Legacy People API尚未在项目中使用,node.js,google-cloud-platform,oauth,google-api,passport.js,Node.js,Google Cloud Platform,Oauth,Google Api,Passport.js,注意:这可能是一些SO问题的重复,但仔细阅读这些答案并不能解决这个问题 我正试图根据和使用passport google oauth集成google oauth 面对此错误(它指的是某些链接,但链接不起作用) server.js const express = require('express'), app = express(), passport = require('passport'), auth = require('./auth'), cookiePa

注意:这可能是一些SO问题的重复,但仔细阅读这些答案并不能解决这个问题

我正试图根据和使用passport google oauth集成google oauth

面对此错误(它指的是某些链接,但链接不起作用)

server.js

const express = require('express'),
    app = express(),
    passport = require('passport'),
    auth = require('./auth'),
    cookieParser = require('cookie-parser'),
    cookieSession = require('cookie-session');

auth(passport);
app.use(passport.initialize());

app.use(cookieSession({
    name: 'session',
    keys: ['SECRECT KEY'],
    maxAge: 24 * 60 * 60 * 1000
}));
app.use(cookieParser());

app.get('/', (req, res) => {
    if (req.session.token) {
        res.cookie('token', req.session.token);
        res.json({
            status: 'session cookie set'
        });
    } else {
        res.cookie('token', '')
        res.json({
            status: 'session cookie not set'
        });
    }
});

app.get('/logout', (req, res) => {
    req.logout();
    req.session = null;
    res.redirect('/');
});

app.get('/auth/google', passport.authenticate('google', {
    scope: ['https://www.googleapis.com/auth/userinfo.profile']
}));

app.get('/auth/google/callback',
    passport.authenticate('google', {
        failureRedirect: '/'
    }),
    (req, res) => {
        console.log(req.user.token);
        req.session.token = req.user.token;
        res.redirect('/');
    }
);

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

最终问题得到解决,有多个库具有相似的名称。。i、 e.passport-google-oauth、passport-google-oauth2和passport-google-oauth2。在尝试了所有3种方法后,它确实对我有效


是github url,但它是关于passport-google-oauth20的

你好,我因为同样的问题而感到沮丧。我可以知道启用任何API的确切错误或需要什么吗?。我正在使用passport-google-oauth20模块示例进行谷歌登录。请让我知道@Shivasurya-抱歉,刚刚看到你的消息,因为没有通知。您不需要启用任何API,只需使用accepted中提到的正确库即可。在我的回答中,有正确的链接和我遵循的示例。。那就足够了。。是的,这确实是一个非常令人沮丧的错误,因为它误导了多个库和正确的消息。这个答案对我很有用,谢谢,但我还应该提到,如果我启用google+API、google Drive API和google Sheets API,我可以使用passport google oauth。我不记得我是怎么做到这一点的。不管怎样,只需使用passport-google-oauth20!:)嗨,我也有同样的问题。你是如何启用Google+API、Google People API和Contact API的?因为从我所知,它不能再启用了?@Bryan-抱歉,刚才看到了你的消息,因为没有通知。。您不需要启用任何API,只需使用正确的库。。正如被接受的答案中提到的。没问题,我最终用被接受的答案让它工作。
const GoogleStrategy = require('passport-google-oauth')
    .OAuth2Strategy;

module.exports = function (passport) {
    passport.serializeUser((user, done) => {
        done(null, user);
    });
    passport.deserializeUser((user, done) => {
        done(null, user);
    });
    passport.use(new GoogleStrategy({
        clientID: "xxxxxxxxxxxx",
        clientSecret: "xxxxxxxxxxxx",
        callbackURL: '/auth/google/callback'
    }, (token, refreshToken, profile, done) => {
        return done(null, {
            profile: profile,
            token: token
        });
    }));
};
const express = require('express'),
    app = express(),
    passport = require('passport'),
    auth = require('./auth'),
    cookieParser = require('cookie-parser'),
    cookieSession = require('cookie-session');

auth(passport);
app.use(passport.initialize());

app.use(cookieSession({
    name: 'session',
    keys: ['SECRECT KEY'],
    maxAge: 24 * 60 * 60 * 1000
}));
app.use(cookieParser());

app.get('/', (req, res) => {
    if (req.session.token) {
        res.cookie('token', req.session.token);
        res.json({
            status: 'session cookie set'
        });
    } else {
        res.cookie('token', '')
        res.json({
            status: 'session cookie not set'
        });
    }
});

app.get('/logout', (req, res) => {
    req.logout();
    req.session = null;
    res.redirect('/');
});

app.get('/auth/google', passport.authenticate('google', {
    scope: ['https://www.googleapis.com/auth/userinfo.profile']
}));

app.get('/auth/google/callback',
    passport.authenticate('google', {
        failureRedirect: '/'
    }),
    (req, res) => {
        console.log(req.user.token);
        req.session.token = req.user.token;
        res.redirect('/');
    }
);

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});