0
OAuth2, GitHub를 사용하여 사용자를 인증하고이를 위해 여권을 사용하려고합니다.여권 및 몽구스 모델을 사용하여 사용자를 찾거나 만듭니다.
전적으로 테스트 목적으로 매우 간단한 사용자 모델을 사용합니다.
var mongoose = require("mongoose"),
Schema = mongoose.Schema;
UserSchema = new Schema({
email: { type: String, unique: true }
});
mongoose.model("User", UserSchema);
경로는 여권의 문서에서 다소 벗어나 있습니다.
router.get("/github", passport.authenticate("GitHub", { scope: ["user"] }));
router.get("/github/callback", passport.authenticate("GitHub", {
successRedirect: "/#/user/authenticated",
failureRedirect: "/#/auth/error"
}));
serializeUser 및 deserializeUser 후, 나는 다음과 같은 한 :
passport.use('GitHub', new OAuth2Strategy({
authorizationURL: 'https://github.com/login/oauth/authorize',
tokenURL: 'https://github.com/login/oauth/access_token',
clientID: 'client id',
clientSecret: 'too secret for you to handle',
callbackURL: 'http://dev.corvid.com:3000/auth/github/callback'
}, function(accessToken, refreshToken, profile, done) {
User.findOneAndUpdate(
{ _id: profile.id }, // what to query for
{ $set: { email: profile.email } }, // the update arguments
{ new: true, upsert: true}, // the options
function(err, user) {
done(err, user);
});
}
));
그러나, 나는 꽤 의도 한대로이 작업을 얻을 수없는 것. 그것은 나를 받아들이는 github에서 인증하도록 지시합니다. 그런 다음 다음과 같은 메시지가 뜹니다 내 사이트로 다시 리디렉션 오전 :
{"message":"Cast to string failed for value \"undefined\" at path \"email\""}
빠른 CONSOLE.LOG는 프로파일이 빈 개체 {}
것을 보여준다.
단일 페이지 앱에서 여권으로 OAuth2 사용자를 인증하고 인증하는 방법은 어떻게 관리해야합니까?
편집 : 마지막 페이지의 URL은 다음과 같습니다