0
私はSpotifyのAPIで認証するアプリケーションを開発中です。私はpassport-spotifyを使っています。自分のルートルートにあるセッションID(/
)にアクセスできる必要があります。Expressでリクエストオブジェクトのルート間でデータを共有するにはどうすればよいですか?
私は/callback
の認証の後、SpotifyでセッションIDを設定できますが、セッションIDは/
にはアクセスできません。誰かが私が認証した後req.session.id
/
にアクセスできるようにExpressのルート間でデータを渡す方法を教えてください。
私はここに私のエンドポイントを共有します:
/
app.get('/', cors(), (req, res) => {
if (req.session.id != null) {
res.json({isAuthenticated: true })
} else {
res.json({isAuthenticated: false, message: 'Please log in.' })
}
})
パスポート戦略
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)
})