状态参数无法使用passport-google-oauth2程序包节点js运行

时间:2018-06-20 05:18:42

标签: node.js koa passport-google-oauth passport-google-oauth2

简介 我正在使用Google的开放式身份验证,以便用户使用Google身份验证登录。对节点js使用passport-google-oauth2包。

除了我一直在发送状态变量但得到不同状态值的一件事之外,代码工作得很好。首先,我认为这可能是一些配置问题。从关于状态参数的最后一天开始,我认为我可能做错了配置。

Web框架:Koa Js

代码验证

passport.use(new GoogleStrategy({
    clientID: 'xxxxxxxxxxx.apps.googleusercontent.com',
    clientSecret: 'xxxxxxxxxxxxxxxxxxxxxx',
    callbackURL: 'http://localhost:5000/auth/callback/google',
    passReqToCallback: true,
    response_type:'token',
    scope: "openid profile email",
    state: base64url(JSON.stringify({blah: 'test'})),
    accessType: 'offline'
  },
  function(request, accessToken, refreshToken, profile, done) {
    if(accessToken){

        console.log('-------request--------??', request);
            console.log('-------accessToken--------??', accessToken);
            console.log('-------refreshToken--------??', refreshToken);
            console.log('-------profile--------??', profile);
            console.log('-------authenticated-------');
            done(null, user);
        }
        else{
            console.log('-------not authenticated-------');
            done(null, false);
        }
  }
));

在重定向中,我正在查询字符串中获取所有参数,而且状态变量的值也不同。

示例QueryString

{ 
state: 'T3Lx3XvvSlsGitbNqlCM8CEB',
code: '4/AABGuKCh3Sp0kv2eWSbYsUEAT4iXA2k9u7o2X_ICw0wchiIq38MofOuTmx_yGQSXAFn7iAq9meZXUKRh0qVOAv0',
authuser: '0',
session_state: 'af3af7767c5501d163fa847225b863a9982d76ef..1c9b',
prompt: 'none' 
}

如果有人对问题有任何想法,请提供帮助。感谢您的宝贵时间。

1 个答案:

答案 0 :(得分:0)

我找到了答案,实际上,护照js将其自动生成的状态与身份验证调用一起发送到会话中。稍后在Google的重定向调用中以查询字符串形式接收到。