passport-google-oauth : GooglePlusAPIError: Legacy People API has not been used in project
passport-google-oauth : GooglePlusAPIError: Legacy People API has not been used in project
注意 :它可能与某些 SO 问题重复,但通过这些答案并没有解决这个问题。
我正在尝试根据 passport js doc and github example.
使用 passport-google-oauth 集成 google-oauth
遇到这个错误(它指的是一些link,但是link不起作用)
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 人员 API 和联系人 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');
});
问题终于解决了,有多个名称相似的库.. 即 passport-google-oauth 、 passport-google-oauth2 和 passport-google-oauth20。在尝试了所有 3 个之后,passport-google-oauth20 确实对我有用。
passport-google-oauth2 是 github url 但它是关于 passport-google-oauth20。
注意 :它可能与某些 SO 问题重复,但通过这些答案并没有解决这个问题。
我正在尝试根据 passport js doc and github example.
使用 passport-google-oauth 集成 google-oauth遇到这个错误(它指的是一些link,但是link不起作用)
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 人员 API 和联系人 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');
});
问题终于解决了,有多个名称相似的库.. 即 passport-google-oauth 、 passport-google-oauth2 和 passport-google-oauth20。在尝试了所有 3 个之后,passport-google-oauth20 确实对我有用。
passport-google-oauth2 是 github url 但它是关于 passport-google-oauth20。