2016-08-13 4 views
1

Я использую passport.js с стратегией GitHub для аутентификации пользователей. Я успешно выполнил вход пользователя и могу запросить учетные данные текущего пользователя на сервере (req.user).Как переслать мои данные паспорта js в GitHub?

Теперь я хочу использовать GitHub api из своего приложения. Благодаря CORS, моя установка такова:

User Action <-> GET/POST <-> My Web Server <-> GET/POST <-> GitHub 

Проблема заключается в том, что мой веб-сервер должен передавать учетные данные пользователя при выполнении запросов на GitHub от их имени.

Как мне «запереть» мою пользовательскую сессию в GitHub?

Я использую superagent на своем сервере для вызова API GitHub.

+0

Связанные дискуссиях: https://github.com/jaredpalmer/react-production-starter/issues/37 – sdgfsdh

ответ

2

Для решения этой проблемы существует две части. Во-первых, вам нужно сохранить доступ-маркер пользователя при GitHub запускает функцию обратного вызова:

passport.use(new GitHubStrategy({ 
    clientID: gitHubClientId, 
    clientSecret: gitHubClientSecret, 
    callbackURL: gitHubCallback 
    }, 
    (accessToken, refreshToken, profile, cb) => { 
    cb(null, {accessToken, profile}); // Note that we serialize the access-token 
    } 
)); 

Далее вам нужно включить доступ-токен в ваших запросов на GitHub. Например, для создания нового объявления:

request.post('https://api.github.com/gists') 
    .set('Authorization', 'Token ' + req.user.accessToken) // This is the important bit! 
    .send(newGist) 
    .end((error, result) => { 
    console.log(error, result); 
    }); 

 Смежные вопросы

  • Нет связанных вопросов^_^