有些用户无法登录我的Google应用

时间:2016-11-29 09:45:46

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

我开发了一个具有google登录功能的node.js应用程序。我使用。开发了谷歌登录。

"passport": "^0.3.2"
"passport-google-oauth": "^1.0.0"

我担心的是,除了少数用户外,所有其他用户都可以访问此内容。

这是实施

[..]

module.exports = function (passport, config) {

    // used to serialize the user for the session
    passport.serializeUser(function (user, done) {
        console.log(user.id);
        done(null, user);
    });

    // used to deserialize the user
    passport.deserializeUser(function (user, done) {
        console.log("before derializing");
        done(null, user);
    });

    passport.use(
        new GoogleStrategy(
            {
                clientID: config.googleAuth.clientID,
                clientSecret: config.googleAuth.clientSecret,
                callbackURL: config.googleAuth.callbackURL
            },
            function (token, refreshToken, profile, done) {
                process.nextTick(function () {
                    console.log("user is authenticated" + profile.displayName);
                    //TODO sign up
                    done(null, profile);
                });
            }
        )
    );
};

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

找到答案.....

在此我保持了配置文件(配置文件对象来自谷歌)作为会话对象。并且一些配置文件对象包含在护照中设置会话时会导致错误的特殊字符。

因此,为会话维护一个单独的对象解决了这个问题,如下所示。

passport.use(
    new GoogleStrategy(
        {
            clientID: config.googleAuth.clientID,
            clientSecret: config.googleAuth.clientSecret,
            callbackURL: config.googleAuth.callbackURL
        },
        function (token, refreshToken, profile, done) {
            process.nextTick(function () {
                console.log("user is authenticated" + profile.displayName);
                //TODO sign up
                done(null, {
                   displayName: profile.displayName
                });
            });
        }
    )
);