redirect_uri 的参数值无效:缺少方案:/auth/google_auth_code/callback
Posted
技术标签:
【中文标题】redirect_uri 的参数值无效:缺少方案:/auth/google_auth_code/callback【英文标题】:Invalid parameter value for redirect_uri: Missing scheme: /auth/google_auth_code/callback 【发布时间】:2017-08-27 00:51:56 【问题描述】:编辑: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 以正斜杠结尾。我解决了这个问题,但我还没有更新屏幕截图。
如果我使用完整的网址(例如 `http://localhost:8080//auth/google_auth_code/callback),我会收到以下错误:
"error" : "unauthorized_client"
如果我使用完整的网址(例如 `http://localhost:8080/auth/google_auth_code/callback),我会收到以下错误:
"error" : "redirect_uri_mismatch"
【问题讨论】:
http://localhost:8080//auth/google_auth_code/callback
为什么端口号后面有 2 个斜线?
@SagarV 当我在帖子中添加信息时,这一定是一个错字。我只是加倍检查并使用完整(正确)的 URL,我现在收到 redirect_uri_mismatch
错误。这让我觉得你不应该指定主机。
在授权 javascript origins
中,而不是 http://localhost
尝试 http://localhost/auth
并检查它是否工作 @SamB
控制台不允许我添加 /auth 因为Origin URIs must not contain a path or end with "/": http://localhost:8080/auth
我读过这个。但要说清楚,我要问。您是否使用localhost
而不是这个callbackURL: '/auth/google_auth_code/callback'
来确定网址?
【参考方案1】:
似乎是 passport-google 错误,您可能会在此处看到: https://github.com/jaredhanson/passport-google-oauth/issues/21
他们在这个问题中建议使用什么:https://github.com/sqrrrl/passport-google-plus
开源的工作原理,你要么自己修复它,要么找到另一个包。
【讨论】:
以上是关于redirect_uri 的参数值无效:缺少方案:/auth/google_auth_code/callback的主要内容,如果未能解决你的问题,请参考以下文章
通过 OAuth 2 连接到 Google“redirect_uri 的参数值无效:缺少权限:”
Google OAuth 2.0 invalid_request,缺少方案
使用概念 API 进行授权时出现错误“缺少或无效的 redirect_uri”
Keycloak 登录页面显示“无效参数:redirect_uri”