我正在使用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请求无法解决。