У меня есть услуга, и моя цель - позволить пользователю авторизовать нас на свою учетную запись Github через OAuth. Уровень API не имеет статуса, поэтому я не хочу поддерживать информацию о сеансе. Код, который у меня есть до сих пор:
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'
Итак, когда пользователь обращается к /auth/github/:sessionToken
, я хочу, чтобы passport
выполнял свою магию и перенаправлял пользователя на github. Это отлично работает. Но когда они вернутся к /auth/github/callback
, мне все равно нужно определить, какой пользователь он есть.
Так как это служба API, предполагается, что она будет неактивной, поэтому, как я уже упоминал ранее, я ищу способ передать этот токен в /auth/github/callback
. Как я могу это сделать?