Passport JS Google OAuth2 - 强制登录或帐户选择器

Jak*_*dak 4 node.js google-login passport.js oauth2

我在用 nodejs+express 编写的服务中使用谷歌登录,并使用passport-google-oauth 登录谷歌。在我的网站上,我有一个“使用 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
   })

})
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用。

Jak*_*dak 6

原来是提示参数放错了地方。而不是将它作为 GoogleStrategy 构造函数的参数,我应该将它放入passport.authenticate() 中间件的参数中

router.get('/', passport.authenticate('google', {
    scope: SCOPES,
    prompt: 'select_account'
}))
Run Code Online (Sandbox Code Playgroud)