Passport JS Google OAuth2 - 强制登录或帐户选择器
Passport JS Google OAuth2 - force login or account chooser
我有 google 登录我的服务,用 nodejs+express 编写并使用 passport-google-oauth 登录 google。
在我的网站上,我有一个 'Sign in with Google' 按钮。我想要的是在用户点击此按钮时始终显示 google 登录名或帐户选择器。相反,如果我在浏览器中只登录了一个 google 帐户,我会立即使用该帐户登录服务。我在定义 GoogleStrategy 时尝试过类似的方法:
passport.use(new GoogleStrategy({
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackURL: REDIRECT_URL,
passReqToCallback : true,
prompt: 'select_account' // <--!!!
}, function(req, accessToken, refreshToken, profile, done) {
//callback stuff
})
})
但是好像不行。
原来提示参数放错地方了。与其将它作为 GoogleStrategy 构造函数的参数,我应该将它放入 passport.authenticate() 中间件
的参数中
router.get('/', passport.authenticate('google', {
scope: SCOPES,
prompt: 'select_account'
}))
我有 google 登录我的服务,用 nodejs+express 编写并使用 passport-google-oauth 登录 google。 在我的网站上,我有一个 'Sign in with Google' 按钮。我想要的是在用户点击此按钮时始终显示 google 登录名或帐户选择器。相反,如果我在浏览器中只登录了一个 google 帐户,我会立即使用该帐户登录服务。我在定义 GoogleStrategy 时尝试过类似的方法:
passport.use(new GoogleStrategy({
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackURL: REDIRECT_URL,
passReqToCallback : true,
prompt: 'select_account' // <--!!!
}, function(req, accessToken, refreshToken, profile, done) {
//callback stuff
})
})
但是好像不行。
原来提示参数放错地方了。与其将它作为 GoogleStrategy 构造函数的参数,我应该将它放入 passport.authenticate() 中间件
的参数中router.get('/', passport.authenticate('google', {
scope: SCOPES,
prompt: 'select_account'
}))