错误视图
InternalOautherRror:在Strategy.oauthStrategy._CreateOutherRror(/users/Menaka/WebStormProjects/CardCreaterServer/Node_Modules/Passport-Oauth1/Lib/Strategy。js:396:17)在/users/Menaka/WebStormProjects/CardCreaterServer/Node_Modules/Passport-Oauth1/Lib/Strategy。js:244:41在/users/Menaka/WebStormProjects/CardCreaterServer/Node_Modules/Passport-Oauth1/Lib/Strategy。js:543:17在passBackControl(OAuth.js:397:13)在IncomingMessage。(/users/menaka/webstormprojects/cardcreaterserver/node_modules/oauth/lib/oauth.js:409:9)在emitNone(events.js:72:20)在incomingmessage.emit(events.js:166:7)在endreadableent(_stream_readable.js:921:12)
在nextTickCallbackWith2Args(node.js:442:9)在process._tickcallback(node.js:356:17)
我已经在Google api Manager平台中启用了Google+api
http://localhost:3000
和授权重定向URI
在我的routes.js文件中
var User = require('./models/user');
module.exports = function(app, passport){
app.get('/', function(req, res){
res.render('index.ejs');
});
app.get('/login', function(req, res){
res.render('login.ejs', { message: req.flash('loginMessage') });
});
app.post('/login', passport.authenticate('local-login', {
successRedirect: '/profile',
failureRedirect: '/login',
failureFlash: true
}));
app.get('/signup', function(req, res){
res.render('signup.ejs', { message: req.flash('signupMessage') });
});
app.post('/signup', passport.authenticate('local-signup', {
successRedirect: '/',
failureRedirect: '/signup',
failureFlash: true
}));
app.get('/profile', isLoggedIn, function(req, res){
res.render('profile.ejs', { user: req.user });
});
app.get('/auth/google', passport.authenticate('google', {scope: ['profile','email']}));
app.get('/auth/google/callback',
passport.authenticate('google', { successRedirect: '/profile',
failureRedirect: '/' }));
app.get('/logout', function(req, res){
req.logout();
res.redirect('/');
})
};
function isLoggedIn(req, res, next) {
if(req.isAuthenticated()){
return next();
}
res.redirect('/login');
}
在我的Passport.js中
var LocalStrategy = require('passport-local').Strategy;
var GoogleStrategy = require('passport-google-oauth').OAuthStrategy;
var User = require('../app/models/user');
var configAuth=require('./auth');
module.exports = function(passport) {
passport.serializeUser(function(user, done){
done(null, user.id);
});
passport.deserializeUser(function(id, done){
User.findById(id, function(err, user){
done(err, user);
});
});
passport.use('local-signup', new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true
},
function(req, email, password, done){
process.nextTick(function(){
User.findOne({'local.username': email}, function(err, user){
if(err)
return done(err);
if(user){
return done(null, false, req.flash('signupMessage', 'That email already taken'));
} else {
var newUser = new User();
newUser.local.username = email;
newUser.local.password = newUser.generateHash(password);
newUser.save(function(err){
if(err)
throw err;
return done(null, newUser);
})
}
})
});
}));
passport.use('local-login', new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true
},
function(req, email, password, done){
process.nextTick(function(){
User.findOne({ 'local.username': email}, function(err, user){
if(err)
return done(err);
if(!user)
return done(null, false, req.flash('loginMessage', 'No User found'));
if(!user.validPassword(password)){
return done(null, false, req.flash('loginMessage', 'invalid password'));
}
return done(null, user);
});
});
}
));
passport.use(new GoogleStrategy({
consumerKey: configAuth.GoogleAuth.clientID,
consumerSecret: configAuth.GoogleAuth.clientSecret,
callbackURL: configAuth.GoogleAuth.callbackURL
},
function(accessToken, refreshToken, profile, done) {
process.nextTick(function(){
User.findOne({'google.id':profile.id},function(err,user){
if(err){
return done(err);
}
if(user){
return done(null,user);
}else{
var newUser=new User();
newUser.google.id=profile.id;
newUser.google.token=accessToken;
newUser.google.name=profile.displayName;
newUser.google.email=profile.emails[0].value;
newUser.save(function(err){
if(err){
throw err;
}
return done(null,newUser);
})
}
});
});
}
));
};
callbackURL为
要解决此问题,我必须做什么?
我的头撞了一段时间-似乎有一个旧的链接引用在基本策略。我建议你试试
https://github.com/jaredhanson/passport-google-oauth2
取而代之的是。这是最新的和工作立即为我!
我目前还不熟悉使用php和Laravel以及使用API,但我一直在学习Spotify php教程https://github.com/jwilsson/spotify-web-api-php. 我还大胆地提出了一些我想问的问题,希望有人能帮忙。 我已经完成了所有步骤,但需要帮助才能让它正常工作。 将下面的代码放在它自己的文件中,我们称之为auth。php。将CLIENT_ID和CLIENT_SEC
问题内容: 所以这是我的passport-facebook策略配置: 这是facebookVerificationHandler: 有没有办法访问facebookVerificationHandler中的请求对象? 用户已使用LocalStrategy注册到我的网站,但是他们将能够添加其社交帐户并将这些帐户与本地帐户相关联。调用上面的回调时,req.user中已经有当前登录的用户,因此我需要访问r
我正在学习一个教程,即http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/ 但我无法获取令牌,我的服务类也无法工作。请帮忙
我遵循本教程使用JWT令牌。令牌到期时间设置为仅5分钟,但如果我想在使用1分钟后使令牌无效,该怎么办?我希望能够对API进行调用,以删除我的令牌。 我正在使用Express和Node。 从我能收集到的信息来看,我的选择是拥有一个存储令牌的令牌db。当我想让我的令牌过期时,我会从DB中过期/删除该令牌。 我还看到人们随意地说“移除”物理硬盘空间中的令牌,但我无法找出令牌的物理存储位置,以便我移除它。
我已将OAuth2 Passport安装到我的Laravel项目中。我正在使用postman进行测试,我可以创建新用户,我可以登录(生成令牌)和注销。登录后,我尝试向APIendpoint发出请求,但在这里,我被卡住了,因为无论我在postman
我试图使用从Spring应用程序中的公共客户端获取访问令牌。 谁能帮我弄清楚我做错了什么吗?