我正在尝试在facebook和sails js.in中间件上使用passportjs,这是我的实现。
var verifyHandler = function (token, tokenSecret, profile, done) {
process.nextTick(function () {
//check if the user exist or not
var uid=profile.id;
User.findOne({uid:profile.id}).done(function(err,user){
if(user)
{
console.log('found');
//done(null,user);
}
else
{
console.log('user does not exists');
}
});
};奇怪的是,它不能在model.Where中搜索,我做错了吗?
发布于 2014-04-23 20:15:23
我终于弄明白了,我希望它能帮助任何有同样问题的MySQL的人。1.在您的用户模型中,uid数据类型应该是字符串,而不是INTEGER.Please确保您对VARCHAR表结构进行了相同的更改。2.将middleware.js verifyHandler更改为此(省略parseInt)
var passport = require('passport')
, GitHubStrategy = require('passport-github').Strategy
, FacebookStrategy = require('passport-facebook').Strategy
, GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
var verifyHandler = function (token, tokenSecret, profile, done) {
process.nextTick(function () {
User.findOne({uid: profile.id}).done(function (err, user) {
if (user) {
return done(null, user);
} else {
var data = {
provider: profile.provider,
uid: profile.id,
name: profile.displayName
};
if(profile.emails && profile.emails[0] && profile.emails[0].value) {
data.email = profile.emails[0].value;
}
if(profile.name && profile.name.givenName) {
data.firstname = profile.name.givenName;
}
if(profile.name && profile.name.familyName) {
data.lastname = profile.name.familyName;
}
User.create(data).done(function (err, user) {
return done(err, user);
});
}
});
});
};
passport.serializeUser(function (user, done) {
done(null, user.uid);
});
passport.deserializeUser(function (uid, done) {
User.findOne({uid:uid}).done(function (err, user) {
done(err, user)
});
});
module.exports = {
// Init custom express middleware
express: {
customMiddleware: function (app) {
passport.use(new FacebookStrategy({
clientID: "****",
clientSecret: "********",
callbackURL: "http://localhost:1337/auth/facebook/callback"
},
verifyHandler
));
app.use(passport.initialize());
app.use(passport.session());
}
}
};希望这对某个out.Cheers有帮助!
https://stackoverflow.com/questions/23028612
复制相似问题