2016-08-13 1 views
1

사용자 인증을 위해 GitHub 전략과 함께 passport.js를 사용하고 있습니다. 성공적으로 사용자 로그인을 구현했으며 현재 사용자의 자격 증명을 서버에서 쿼리 할 수 ​​있습니다 (req.user).여권 js 자격 정보를 GitHub에 전달하려면 어떻게해야합니까?

이제 응용 프로그램에서 GitHub API를 사용할 수 있기를 원합니다. 때문에 CORS에, 내 설정이 있습니다 :

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

문제는 내 웹 서버가 대신 GitHub의에 요청을 할 때 사용자의 자격 증명을 전달해야한다는 것입니다.

내 사용자 세션을 GitHub에 "전달"하려면 어떻게해야합니까?

내 서버에서 superagent을 사용하여 GitHub API를 호출합니다.

+0

관련 토론 : https://github.com/jaredpalmer/react-production-starter/issues/37 – sdgfsdh

답변

2

이 문제를 해결하는 데는 두 부분이 있습니다.

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의에 귀하의 요청에 액세스 토큰을 포함해야합니다 : GitHub의 콜백을 트리거 할 때 먼저 사용자의 액세스 토큰을 저장해야합니다. 예를 들어, 새 Gist를 만들려면 :

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); 
    }); 
관련 문제