尝试通过护照linkedin集成linkedin登录时“无法在会话中找到请求令牌”

Posted

技术标签:

【中文标题】尝试通过护照linkedin集成linkedin登录时“无法在会话中找到请求令牌”【英文标题】:Getting "failed to find request token in session" while trying to integrate linkedin login via passport linkedin 【发布时间】:2016-03-06 13:07:42 【问题描述】:

我在尝试通过护照linkedin 集成linkedin 登录时遇到以下错误:

错误:未能在会话中找到请求令牌 Strategy.OAuthStrategy.authenticate (C:\jobninja\facebookauth\node_modules\passport-linkedin\node_modules\passport-oauth1\lib\strategy.js:142:54) 在 Strategy.authenticate (C:\jobninja\facebookauth\node_modules\passport-linkedin\lib\strategy.js:118:40) 在尝试 (C:\jobninja\facebookauth\node_modules\passport\lib\middleware\authenticate.js:348:16) 在验证 (C:\jobninja\facebookauth\node_modules\passport\lib\middleware\authenticate.js:349:7) 在 Layer.handle [as handle_request] (C:\jobninja\facebookauth\node_modules\express\lib\router\layer.js:95:5) 接下来 (C:\jobninja\facebookauth\node_modules\express\lib\router\route.js:131:13) 在 Route.dispatch (C:\jobninja\facebookauth\node_modules\express\lib\router\route.js:112:3) 在 Layer.handle [as handle_request] (C:\jobninja\facebookauth\node_modules\express\lib\router\layer.js:95:5) 在 C:\jobninja\facebookauth\node_modules\express\lib\router\index.js:277:22 在 Function.process_params (C:\jobninja\facebookauth\node_modules\express\lib\router\index.js:330:12) 接下来 (C:\jobninja\facebookauth\node_modules\express\lib\router\index.js:271:10) 在 C:\jobninja\facebookauth\node_modules\connect-flash\lib\flash.js:21:5 在 Layer.handle [as handle_request] (C:\jobninja\facebookauth\node_modules\express\lib\router\layer.js:95:5) 在 trim_prefix (C:\jobninja\facebookauth\node_modules\express\lib\router\index.js:312:13) 在 C:\jobninja\facebookauth\node_modules\express\lib\router\index.js:280:7 在 Function.process_params (C:\jobninja\facebookauth\node_modules\express\lib\router\index.js:330:12)。

这是我的代码

passport.use(new LinkedInStrategy(

        consumerKey     : configAuth.linkedinAuth.clientID,
        consumerSecret  : configAuth.linkedinAuth.clientSecret,
        callbackURL     : configAuth.linkedinAuth.callbackURL,

    ,
    function(token, refreshToken, profile, done) 

        // make the code asynchronous
        // User.findOne won't fire until we have all our data back from Linkedin
        process.nextTick(function() 

            // try to find the user based on their linkedin id
            User.findOne( 'linkedin.id' : profile.id , function(err, user) 
                if (err)
                    return done(err);

                if (user) 

                    // if a user is found, log them in
                    return done(null, user);
                 else 
                    // if the user isnt in our database, create a new user
                    var newUser          = new User();

                    // set all of the relevant information
                    newUser.linkedin.id    = profile.id;
                    newUser.linkedin.token = token;
                    newUser.linkedin.name  = profile.displayName;
                    newUser.linkedin.email = profile.emails[0].value; // pull the first email

                    // save the user
                    newUser.save(function(err) 
                        if (err)
                            throw err;
                        return done(null, newUser);
                    );
                
            );
        );

    ));

谁能找出错误并提供帮助?

【问题讨论】:

【参考方案1】:

您的回调 url 是否与启动主机 url 相同?

【讨论】:

感谢您的回复。实际上回调 url 是相同的,这就是代码不起作用的原因。我在这两个地方都有“127.0.0.1:8080/auth/linkedin/callback”作为我的回调网址。我在我的 auth.js 文件中将回调 url 更改为 'localhost:8080/auth/linkedin/callback' 并删除了上述错误。但现在我面临这个错误:newUser.linkedin.email = profile.emails[0].value; // 拉第一封电子邮件类型错误:无法读取未定义的属性 0。任何建议。 请显示更多代码,作为一个新问题会很好,因为这是另一个话题,如果我的回答对你有好处,请接受。

以上是关于尝试通过护照linkedin集成linkedin登录时“无法在会话中找到请求令牌”的主要内容,如果未能解决你的问题,请参考以下文章

尝试将 Linkedin SDK 集成到我的 Swift 项目中时出错

如何正确实现linkedIn登录?

如何正确实现linkedIn登录?

从 Android 应用程序发布 LinkedIn 消息

在 Android 中注销 LinkedIn 会话

在解析服务器/iOS 上以安全的方式集成 LinkedIn 登录