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

时间:2017-01-31 14:34:34

标签: node.js oauth2 google-login passport.js

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

})

但它似乎不起作用。

1 个答案:

答案 0 :(得分:3)

事实证明,提示参数位于错误的位置。而不是把它作为GoogleStrategy构造函数的参数,我应该把它放入passport.authenticate()中间件的args中

router.get('/', passport.authenticate('google', {
    scope: SCOPES,
    prompt: 'select_account'
}))