【问题标题】:passport-google-oauth : GooglePlusAPIError: Legacy People API has not been used in projectpassport-google-oauth:GooglePlusAPIError:项目中未使用旧版 People API
【发布时间】:2020-06-26 19:18:56
【问题描述】:

注意:它可能与一些 SO 问题重复,但通过这些答案并不能解决此问题。

我正在尝试按照 passport js docgithub example 使用 passport-google-oauth 集成 google-oauth。

遇到这个错误(它引用了一些链接,但链接不起作用)


GooglePlusAPIError: Legacy People API has not been used in project xxxxxxx before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/legacypeople.googleapis.com/overview?project=xxxxxxxxxx then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
    at D:\openSource\passport\express-passport-google-oauth-exmple\node_modules\passport-google-oauth20\lib\strategy.js:95:21
    at passBackControl (D:\openSource\passport\express-passport-google-oauth-exmple\node_modules\oauth\lib\oauth2.js:132:9)
    at IncomingMessage.<anonymous> (D:\openSource\passport\express-passport-google-oauth-exmple\node_modules\oauth\lib\oauth2.js:157:7)
    at IncomingMessage.emit (events.js:215:7)
    at endReadableNT (_stream_readable.js:1184:12)
    at processTicksAndRejections (internal/process/task_queues.js:80:21)

根据 SO 上的其他一些答案,启用了 Google+ API、Google People API 和 Contact API,但错误仍然相同。我知道 Google+ 和 Google People API 目前已停用。

让我知道确切需要启用哪些 Google API 才能运行 Google Auth。我只需要在身份验证期间验证用户并获取基本配置文件。

如果与API enable无关,请帮我查找错误。

代码发布在下面,同样可以在github example获得

auth.js

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
        });
    }));
};

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');
});

【问题讨论】:

  • 嗨,我也有同样的问题。您是如何“启用 Google+ API、Google People API 和联系人 API”的,因为据我所知,它无法再启用?
  • @Bryan - 抱歉,刚刚看到您的消息,因为没有通知。您不需要启用任何 API,只需使用正确的库。如已接受的答案所述。
  • 没问题,我设法让它最终使用接受的答案工作。

标签: node.js google-cloud-platform oauth google-api passport.js


【解决方案1】:

终于问题解决了,有多个名称相似的库。即 passport-google-oauth 、 passport-google-oauth2 和 passport-google-oauth20。在尝试了所有 3 个之后,passport-google-oauth20 确实为我工作。

passport-google-oauth2 是 github 网址,但它是关于 passport-google-oauth20。

【讨论】:

  • 您好,我因同样的问题而感到沮丧。我可以知道确切的错误是什么或需要启用任何 API 吗?我正在使用示例 passport-google-oauth20 模块进行谷歌登录。请让我知道?
  • @Shivasurya - 抱歉,刚刚看到您的消息,因为没有通知。您不需要启用任何 API,只需使用接受中提到的正确库即可。在我的回答中,有正确链接的链接和我遵循的示例..这就足够了..确实是非常令人沮丧的错误,因为误导了多个库和正确的消息。
  • 这个答案对我有用,谢谢,但我还应该提到,如果我启用了 Google+ API、Google Drive API 和 Google Sheets API,我可以使用 passport-google-oauth。我不记得我现在是怎么走到那一步的。无论如何,只需使用passport-google-oauth20! :)
猜你喜欢
  • 2020-04-21
  • 2021-10-28
  • 1970-01-01
  • 2021-04-12
  • 2020-04-24
  • 2021-04-30
  • 2020-03-08
  • 2020-02-27
  • 2019-04-20
相关资源
最近更新 更多