Passport OAuth2回调URL触发两次

时间:2015-01-30 19:46:23

标签: node.js express oauth-2.0 passport.js

我正在使用Passport OAuth2对当前没有自定义Passport策略的API进行身份验证。我的问题似乎是第一个带有/auth/moxtra/callback?code=<code here>访问代码的GET请求挂起,似乎永远不会解决,然后导致第二个GET请求触发到同一个URL。但是,此时访问代码已被API无效,这会导致服务器错误,因此用户永远不会被重定向回我的应用程序。这是输出:

GET /auth/moxtra/callback?code=v-cqK8ywP2I - - ms - -
GET /auth/moxtra/callback?code=v-cqK8ywP2I 500 665.180 ms - 1231

有趣的是,我知道请求有效,因为我正在记录我正在回复的响应;我要查询的所需资源已成功返回。但随后500服务器错误阻止重定向回我的应用程序。

我不完全确定这是Passport错误,但我一直在与管理API的后端人员进行交谈,并且在他的测试中,他认为这不是他的问题。

我非常感谢任何想法/反馈!

编辑:以下是OAuth战略的代码:

passport.use('moxtra', new OAuthStrategy({
  authorizationURL: 'https://api.moxtra.com/oauth/authorize',
  tokenURL: 'https://api.moxtra.com/oauth/token',
  clientID: configAuth.moxtraAuth.clientID,
  clientSecret: configAuth.moxtraAuth.clientSecret,
  callbackURL: configAuth.moxtraAuth.callbackURL
},
function(accessToken, done) {
  console.log("Access token: ", accessToken);
  var url = 'https://api.moxtra.com/me?access_token=' + accessToken;
  request.get(url, function(err, response, body) {
    if (!err && response.statusCode == 200) {
      console.log("Response body: ", body);
    }
  });
}));

这是路由中间件代码:

app.get('/auth/moxtra', passport.authenticate('moxtra'));

app.get('/auth/moxtra/callback', passport.authenticate('moxtra', {
  successRedirect : '/profile',
  failureRedirect : '/',
  failureFlash : true
}));

目前我只是将访问令牌和响应主体记录到控制台。两者都成功归来。我不知道是什么导致第一个GET请求无法解决。

0 个答案:

没有答案