redirect_uri 的参数值无效:缺少方案:/auth/google_auth_code/callback
Invalid parameter value for redirect_uri: Missing scheme: /auth/google_auth_code/callback
编辑:here is a minimal viable project
我正在尝试通过服务器端流程的授权代码从 Google 获取访问和刷新令牌。我在这里遵循了 Google 的指南:https://developers.google.com/identity/sign-in/web/server-side-flow.
我正在使用护照和passport-google-authcode。
节点应用的路由如下:
router.get('/auth/google_auth_code',
passport.authenticate('google_authcode', {
scope:
[
'https://www.googleapis.com/auth/calendar',
'profile',
'https://www.googleapis.com/auth/userinfo.email'
]
}),
function () {
res.end();
})
router.get('/auth/google_auth_code/callback',
passport.authenticate('google_authcode', {
failureRedirect: '/error'
}),
function (req, res) {
// do something with req.user
res.send('hello');
}
);
这是此策略的通行证配置。
passport.use('google_authcode', new GoogleAuthCodeStrategy({
clientID: 'my client id',
clientSecret: 'my secret',
callbackURL: '/auth/google_auth_code/callback',
// passReqToCallback: true
},
function (accessToken, refreshToken, rawResponse, profile, done) {
// unable to get here
}
));
发出身份验证请求时,Google 响应以下错误:
{
"error" : "invalid_request",
"error_description" : "Invalid parameter value for redirect_uri: Missing scheme: /auth/google_auth_code/callback"
}
这是我在 Google 控制台中的凭据设置:
此时我不知道还能做什么。我还尝试将 passport.use 中的回调 URL 更改为绝对 URL。我肯定会取回有效的授权码(看起来像:4/Mb2pcOyhYhziROyFHKH5pnzvUldYbAmMop9SJKbBHXQ
)。如果我可以提供更多相关信息,请告诉我。
谢谢,
山姆
编辑
我注意到 URL 上面有一个正斜杠结尾。我修复了这个问题,但我没有更新屏幕截图。
如果我使用完整的 url(例如 `http://localhost:8080//auth/google_auth_code/callback),我会收到以下错误:
{
"error" : "unauthorized_client"
}
如果我使用完整的 url(例如 `http://localhost:8080/auth/google_auth_code/callback),我会收到以下错误:
{
"error" : "redirect_uri_mismatch"
}
似乎是 passport-google 错误,您可能会在这里看到它:
https://github.com/jaredhanson/passport-google-oauth/issues/21
他们在本期中建议使用的内容:https://github.com/sqrrrl/passport-google-plus
这就是开源的工作原理,您必须自己修复它或寻找其他软件包。
编辑:here is a minimal viable project
我正在尝试通过服务器端流程的授权代码从 Google 获取访问和刷新令牌。我在这里遵循了 Google 的指南:https://developers.google.com/identity/sign-in/web/server-side-flow.
我正在使用护照和passport-google-authcode。
节点应用的路由如下:
router.get('/auth/google_auth_code',
passport.authenticate('google_authcode', {
scope:
[
'https://www.googleapis.com/auth/calendar',
'profile',
'https://www.googleapis.com/auth/userinfo.email'
]
}),
function () {
res.end();
})
router.get('/auth/google_auth_code/callback',
passport.authenticate('google_authcode', {
failureRedirect: '/error'
}),
function (req, res) {
// do something with req.user
res.send('hello');
}
);
这是此策略的通行证配置。
passport.use('google_authcode', new GoogleAuthCodeStrategy({
clientID: 'my client id',
clientSecret: 'my secret',
callbackURL: '/auth/google_auth_code/callback',
// passReqToCallback: true
},
function (accessToken, refreshToken, rawResponse, profile, done) {
// unable to get here
}
));
发出身份验证请求时,Google 响应以下错误:
{
"error" : "invalid_request",
"error_description" : "Invalid parameter value for redirect_uri: Missing scheme: /auth/google_auth_code/callback"
}
这是我在 Google 控制台中的凭据设置:
此时我不知道还能做什么。我还尝试将 passport.use 中的回调 URL 更改为绝对 URL。我肯定会取回有效的授权码(看起来像:4/Mb2pcOyhYhziROyFHKH5pnzvUldYbAmMop9SJKbBHXQ
)。如果我可以提供更多相关信息,请告诉我。
谢谢,
山姆
编辑
我注意到 URL 上面有一个正斜杠结尾。我修复了这个问题,但我没有更新屏幕截图。
如果我使用完整的 url(例如 `http://localhost:8080//auth/google_auth_code/callback),我会收到以下错误:
{
"error" : "unauthorized_client"
}
如果我使用完整的 url(例如 `http://localhost:8080/auth/google_auth_code/callback),我会收到以下错误:
{
"error" : "redirect_uri_mismatch"
}
似乎是 passport-google 错误,您可能会在这里看到它: https://github.com/jaredhanson/passport-google-oauth/issues/21
他们在本期中建议使用的内容:https://github.com/sqrrrl/passport-google-plus
这就是开源的工作原理,您必须自己修复它或寻找其他软件包。