passport.js
passport.use(new OAuth2Strategy({
authorizationURL: ' https://gymkhana.iitb.ac.in/sso/oauth/authorize',
tokenURL: 'https://gymkhana.iitb.ac.in/sso/oauth/token',
clientID: process.env.IITB_SSO_CLIENT_ID,
clientSecret: process.env.IITB_SSO_CLIENT_SECRET,
callbackURL: "http://192.168.0.111:8080/auth/iitbsso/callback"
},
function(accessToken, refreshToken, profile, done) {
console.log(accessToken);
}
app.js
app.get('/auth/iitbsso', passport.authenticate('oauth2', { scope:'basic'}));
app.get('/auth/iitbsso/callback', passport.authenticate('oauth2', {
successRedirect: '/',
failureRedirect: '/login'
}), (req, res) => {
res.redirect(req.session.returnTo || '/');
});
这就是我尝试从服务器获取accessToken的方法 但我的服务器卡在http://192.168.0.111:8080/auth/iitbsso/callback?code=TDPHtfHuKv4HWNhJikkFzNz5bR4fvJ
我在日志中未定义。
所以我的问题是: 1)此策略是自动发出此POST请求还是必须在回调中明确指示它?
POST / sso / oauth / token / HTTP / 1.1
主持人:gymkhana.iitb.ac.in
授权:基本AUTHENTICATION_TOKEN
Content-Type:application / x-www-form-urlencoded;字符集= UTF-8
代码= AUTHORIZATION_CODE&安培; REDIRECT_URI = REDIRECT_URI&安培; grant_type = authorization_code
2)如果确实如此,我该如何让它在我的服务器上运行?
答案 0 :(得分:0)
您需要了解Verify Callback
的工作原理。
查看http://www.passportjs.org/docs/configure/
更具体地说,在您的代码中
function(accessToken, refreshToken, profile, done) {
console.log(accessToken);
// call done(args) here!
}
回答你的问题
passport-oauth2
将为您处理所有脏工作,访问/auth/iitbsso
,然后重定向用户,如/auth/iitbsso/callback