2016-08-13 23 views
1

我正在使用passport.js和GitHub策略来验证用户。我已成功实施用户登录,并且可以查询服务器上当前用户的凭证(req.user)。如何将护照js凭证转发给GitHub?

现在我想从我的应用程序中使用GitHub api。由于CORS,我的设置是这样的:

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

的问题是,我的Web服务器需要代表他们发出请求的GitHub时,将用户的凭据。

我该如何向GitHub“前进”我的用户会话?

我在我的服务器上使用superagent来调用GitHub API。

+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上的访问令牌。例如,要创建新的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); 
    });