【发布时间】:2014-10-28 13:29:15
【问题描述】:
我使用 passportjs 和 passport-github 在我的应用程序中创建了社交登录,
passport.use(new GithubStrategy(
{
clientID : configAuth.githubAuth.clientID,
clientSecret : configAuth.githubAuth.clientSecret,
callbackURL : configAuth.githubAuth.callbackURL
},
function(token, refreshToken, profile, done) {
process.nextTick(function() {
User.findOne({'github.id' : profile.id}, function(err, user) {
if (err) {
return done(err);
}
if (user) {
return done(null, user);
} else {
var newUser = new User();
newUser.github.id = profile.id,
newUser.token = token,
newUser.name = profile.displayName;
newUser.email = profile.emails[0].value;
newUser.username = profile.username;
// save
newUser.save(function(err){
if (err) {
throw err;
}
return done(null, newUser);
});
}
});
});
}
));
现在我正在使用另一个名为 octonode 的组件,它需要 access_token 来验证其用户,回调中的令牌是否与此 access_token 相同,因为这样做时我似乎没有经过身份验证:
var github = require('octonode');
exports.read = function (req, res, next) {
var client = github.client();
client.get('/user?access_token=' + req.user.token, {}, function (err, status, body, headers) {
res.json(body);
});
};
也尝试过这样做:
var client = github.client(req.user.token);
client.get('/user',{}, function...)
我得到一个空白屏幕,表示没有响应。
【问题讨论】:
-
您已经验证
req.user.token实际上是在返回令牌值? -
是的,它实际上是在返回一个值,一些乱码。
-
我猜,req.user.token和github返回的token不一样。
-
你能验证一下吗?我在存储/访问令牌的方式上采用了不同的方法,但您保存的令牌看起来是正确的。
-
事实上,我通常会更新大多数属性,以获取用户所做的任何更新。
标签: node.js express passport.js github-api