Ho un servizio e il mio obiettivo è consentire a un utente di autenticarci sul suo account Github tramite OAuth. Il livello API è stateless, quindi non voglio mantenere alcuna informazione sulla sessione. Il codice che ho finora è:Come posso configurare passport-github per riconoscere l'utente durante la richiamata?
app.use passport.initialize()
app.use passport.session()
passport.use new GitHubStrategy
clientID: global.config.oauth.github.clientID
clientSecret: global.config.oauth.github.clientSecret
callbackURL: "http://localhost:9500/auth/github/callback"
passReqToCallback: true
, (req, accessToken, refreshToken, profile, done) ->
console.log req.params
serviceQuery =
service: 'github'
provider_id: "#{profile.id}"
UserId: 13
global.db.Service.find
where: serviceQuery
.then (dbService) ->
if not dbService
newService =
service: 'github'
token: accessToken
secret: null
provider_id: profile.id
raw: profile._json
UserId: 13
global.db.Service.create newService
else
dbService.token = accessToken
dbService.raw = profile._json
dbService.save()
.then ->
done null, true
app.get '/auth/github/:sessionToken', (req, res, next) ->
console.log req.params
next()
, passport.authenticate 'github',
scope: 'repo'
session: false
app.get '/auth/github/callback', passport.authenticate('github',
scope: 'repo'
session: false
), (req, res) ->
res.redirect 'http://localhost:8080/app'
modo che quando l'utente viene indirizzato a /auth/github/:sessionToken
, voglio passport
a fare la sua magia e reindirizzare l'utente a GitHub. Funziona alla grande Ma quando ritornano a /auth/github/callback
, devo ancora essere in grado di identificare quale utente sia.
Poiché questo è il servizio API, dovrebbe essere stateless, così come ho detto prima, sto cercando un modo per passare quel token allo /auth/github/callback
. Come posso realizzare questo?
[Questa guida] (https://scotch.io/tutorials/easy-node-authentication-google) mostra effettivamente come visualizzare le informazioni dall'autenticazione google. Sembra che le informazioni di google siano visualizzate in una variabile user.google. Forse prova a console un log req.user.github per ottenere le loro informazioni github. – tilted
Ma come può memorizzarlo se non si imposta una sessione? – Shamoon
Hey @Shamoon, grazie mille. Sono contento che abbia finito per aiutare. – tilted