passport-oauth2
passport-oauth2 copied to clipboard
Suggested way to read User profile from other routes
Hi there,
Struggling to understand how to pull out User on other routes that are mounted with Koa.
SETUP:
server.koaApp.use(koaSession(
{
key: sessionKey,
rolling: true,
maxAge: sessionMaxAge,
sameSite: 'none',
secure: true,
// @ts-ignore
domain: undefined
},
server.koaApp,
));
// set up passport sessions here
function createPassport() {
const passport = new KoaPassport();
passport.use(new OAuth2Strategy({
authorizationURL: oauthClientAuthUrl,
tokenURL: oauthClientTokenUrl,
clientID: oauthClientId,
clientSecret: oauthClientSecret,
callbackURL: oauthClientRedirectUrl,
}, function(accessToken, refreshToken, params, profile, cb) {
cb(null, {id: 'somedudesID', accessToken});
}));
passport.serializeUser((user, done) => {
done(null, user);
});
passport.deserializeUser((user, done) => {
done(null, user);
});
return passport;
};
const passport = createPassport();
server.koaApp.use(passport.initialize());
server.koaApp.use(passport.session());
ROUTES:
router.get(
'/login',
passport.authenticate('oauth2')
);
router.get('/authorize', passport.authenticate('oauth2'), (ctx: any) => {
const { accessToken } = ctx.session.passport.user;
ctx.state.accessToken = accessToken;
ctx.status = 200;
});
router.get('/get-token-from-state', (ctx: any) => {
console.log(ctx.state.accessToken); // undefined
});
Question:
Should I be trying to persist the accessToken to state? Surely there's a way to pull this out of the ctx object when calling the route /get-token-from-state ? Can i use the session?