缺少必需的参数:redirect_uri with passport-google-oauth
Missing required parameter: redirect_uri with passport-google-oauth
在我的 MEAN Stack 应用程序中使用 passport-google-oauth: "0.2.0"
(在此处找到:https://github.com/jaredhanson/passport-google-oauth)。当我 运行 应用程序并尝试使用 Google API 登录时,返回此错误
- That’s an error.
Error: invalid_request
Missing required parameter: redirect_uri
Request Details
scope=https://www.googleapis.com/auth/plus.login
response_type=code
redirect_uri=
client_id=xxxx-xxxx.apps.googleusercontent.com
重定向参数在这里
passport-init.js
var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
var GOOGLE_CLIENT_ID = "xxx-xxx.apps.googleusercontent.com";
var GOOGLE_CLIENT_SECRET = "xxxx";
passport.use(new GoogleStrategy({
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackUrl: "http://127.0.0.1:3000/auth/google/oauth2callback" },
function(accessToken, refreshToken, profile, done){
done(null,profile); } ));
路线在这里authenticate.js
router.get('/google', passport.authenticate('google',
{ scope: ['https://www.googleapis.com/auth/plus.login']}),
function (req, res){ });
router.get('/google/oauth2callback', passport.authenticate('google', {
successRedirect: '/auth/success', failureRedirect: '/auth/failure' })
, function (req, res) {res.redirect('/');} );
我确定我遗漏了一些简单的东西,但我不知道在这个问题中添加什么可以为您提供最好的信息。请提问,我会尽力回答你。这就是相关数据的感觉。
有趣的是,如果我手动添加 callbackUrl,那么一切都会很好。我可以达到 Google API 罚款。然后我可以选择 "allow" 或 "deny" 请求。
我有一个使用相同策略的工作示例。由于我没有收到此错误,无法确定问题所在,但我想建议您检查以下内容:
添加到您的 google 策略创建(新的 GoogleStrategy({...}))范围:
确保您的 google api 在 dev api console 中正确配置。具体来说:
- 在 API 和授权下 |证书 | OAuth 同意屏幕 - 所有必需的 url.
- 在 API 和授权下 |凭据 - 查找您的网络 api 客户端并查看您授权了所有相关的 URI。如果调用来自或重定向到未在本节中列出的页面,则身份验证将不起作用。
定义 GoogleStrategy 时,JSON 键应该是 callbackURL 而不是 callbackUrl(即大写 URL)。也有这个 'issue' ;-)
我用类似的东西-
1. 确保是 URL 而不是 uri。
2. 确保您注册的回调 URL 与您请求的回调相同。
var passport = require('passport');
var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
// Use the GoogleStrategy within Passport.
// Strategies in Passport require a `verify` function, which accept
// credentials (in this case, an accessToken, refreshToken, and Google
// profile), and invoke a callback with a user object.
passport.use(new GoogleStrategy({
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackURL: "http://www.example.com/auth/google/callback"
//should be same as the one you registered in credentials.
},
function(accessToken, refreshToken, profile, done) {
User.findOrCreate({ googleId: profile.id }, function (err, user) {
return done(err, user);
});
}
));
P.S:我在 Whosebug 上的第一个。请忽略错误并帮助我改进。
我的问题出现在使用 WSL 进行身份验证时。出现以下错误:
error issue
要解决,请在您的终端中使用命令 gcloud init --console-only
。
在我的 MEAN Stack 应用程序中使用 passport-google-oauth: "0.2.0"
(在此处找到:https://github.com/jaredhanson/passport-google-oauth)。当我 运行 应用程序并尝试使用 Google API 登录时,返回此错误
- That’s an error.
Error: invalid_request
Missing required parameter: redirect_uri
Request Details scope=https://www.googleapis.com/auth/plus.login response_type=code redirect_uri= client_id=xxxx-xxxx.apps.googleusercontent.com
重定向参数在这里
passport-init.js
var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
var GOOGLE_CLIENT_ID = "xxx-xxx.apps.googleusercontent.com"; var GOOGLE_CLIENT_SECRET = "xxxx";
passport.use(new GoogleStrategy({
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackUrl: "http://127.0.0.1:3000/auth/google/oauth2callback" }, function(accessToken, refreshToken, profile, done){ done(null,profile); } ));
路线在这里authenticate.js
router.get('/google', passport.authenticate('google', { scope: ['https://www.googleapis.com/auth/plus.login']}), function (req, res){ });
router.get('/google/oauth2callback', passport.authenticate('google', { successRedirect: '/auth/success', failureRedirect: '/auth/failure' }) , function (req, res) {res.redirect('/');} );
我确定我遗漏了一些简单的东西,但我不知道在这个问题中添加什么可以为您提供最好的信息。请提问,我会尽力回答你。这就是相关数据的感觉。
有趣的是,如果我手动添加 callbackUrl,那么一切都会很好。我可以达到 Google API 罚款。然后我可以选择 "allow" 或 "deny" 请求。
我有一个使用相同策略的工作示例。由于我没有收到此错误,无法确定问题所在,但我想建议您检查以下内容:
添加到您的 google 策略创建(新的 GoogleStrategy({...}))范围:
确保您的 google api 在 dev api console 中正确配置。具体来说:
- 在 API 和授权下 |证书 | OAuth 同意屏幕 - 所有必需的 url.
- 在 API 和授权下 |凭据 - 查找您的网络 api 客户端并查看您授权了所有相关的 URI。如果调用来自或重定向到未在本节中列出的页面,则身份验证将不起作用。
定义 GoogleStrategy 时,JSON 键应该是 callbackURL 而不是 callbackUrl(即大写 URL)。也有这个 'issue' ;-)
我用类似的东西- 1. 确保是 URL 而不是 uri。 2. 确保您注册的回调 URL 与您请求的回调相同。
var passport = require('passport');
var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
// Use the GoogleStrategy within Passport.
// Strategies in Passport require a `verify` function, which accept
// credentials (in this case, an accessToken, refreshToken, and Google
// profile), and invoke a callback with a user object.
passport.use(new GoogleStrategy({
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackURL: "http://www.example.com/auth/google/callback"
//should be same as the one you registered in credentials.
},
function(accessToken, refreshToken, profile, done) {
User.findOrCreate({ googleId: profile.id }, function (err, user) {
return done(err, user);
});
}
));
P.S:我在 Whosebug 上的第一个。请忽略错误并帮助我改进。
我的问题出现在使用 WSL 进行身份验证时。出现以下错误:
error issue
要解决,请在您的终端中使用命令 gcloud init --console-only
。