Je travaille sur une application qui s'authentifie avec l'API de Spotify. J'utilise passport-spotify pour le faire. Je dois être en mesure d'accéder à un ID de session à mon itinéraire racine (/
).Comment puis-je partager des données entre des itinéraires sur l'objet de requête dans Express?
Bien que je puisse définir l'ID de session pendant le /callback
après l'authentification avec Spotify, je ne peux pas alors accéder à l'ID de session au /
. Est-ce que quelqu'un peut m'expliquer comment passer des données entre les routes dans Express pour pouvoir accéder à req.session.id
en /
après m'être authentifié?
Je vais partager mes points de terminaison ici:
/
app.get('/', cors(), (req, res) => {
if (req.session.id != null) {
res.json({isAuthenticated: true })
} else {
res.json({isAuthenticated: false, message: 'Please log in.' })
}
})
Stratégie Passeport
passport.use(new SpotifyStrategy({
clientID: clientId,
clientSecret: clientSecret,
callbackURL: CALLBACK_URL
},
(accessToken, refreshToken, profile, done) => {
process.nextTick(function() {
let user = { spotifyId: profile.id, access_token: accessToken,
refresh_token: refreshToken }
return done(null, user)
})
}))
/auth/spotify
app.get('/auth/spotify',
passport.authenticate('spotify', {scope: ['user-read-email', 'user-
read-private'], showDialog: true}),
(req, res) => {
})
/callback
app.get('/callback', passport.authenticate('spotify', {
failureRedirect: '/', successRedirect: FRONTEND_URL }), (req, res,
next) => {
req.session.id = req.user.spotifyId
localStorage.setItem('access_token_' + req.session.id,
req.user.access_token)
localStorage.setItem('refresh_token_' + req.session.id,
req.user.refresh_token)
return next(null, req.session.id)
})