Как настроить паспорт-github для подтверждения пользователя при обратном вызове?

У меня есть услуга, и моя цель - позволить пользователю авторизовать нас на свою учетную запись 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. Как я могу это сделать?

Ответ 1

Попробуйте консольный журнал req.user в вашем/auth/github/обратном вызове. Я считаю, что req.user все равно будет хранить свою информацию о пользователе. Как показано в этот учебник, они передают информацию о пользователе, которая будет отображаться, передавая в req.user.