pur*_*i21 4 node.js oauth-2.0 express facebook-authentication
所以我正在学习node.js和facebook身份验证,我遇到了这个错误:
/home/lindan4/Git/HelloNodeJS/ChatTime/node_modules/passport-oauth2/lib/strategy.js:79
if (!verify) { throw new TypeError('OAuth2Strategy requires a verify callback'); }
^
TypeError: OAuth2Strategy requires a verify callback
at Strategy.OAuth2Strategy (/home/lindan4/Git/HelloNodeJS/ChatTime/node_modules/passport-oauth2/lib/strategy.js:79:24)
at new Strategy (/home/lindan4/Git/HelloNodeJS/ChatTime/node_modules/passport-facebook/lib/strategy.js:55:18)
at module.exports (/home/lindan4/Git/HelloNodeJS/ChatTime/app/auth/index.js:42:16)
at Object.<anonymous> (/home/lindan4/Git/HelloNodeJS/ChatTime/server.js:3:22)
at Module._compile (internal/modules/cjs/loader.js:707:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:718:10)
at Module.load (internal/modules/cjs/loader.js:605:32)
at tryModuleLoad (internal/modules/cjs/loader.js:544:12)
at Function.Module._load (internal/modules/cjs/loader.js:536:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:760:12)
at startup (internal/bootstrap/node.js:308:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:878:3)Run Code Online (Sandbox Code Playgroud)
这是代码:
'use strict';
const passport = require('passport');
const config = require('../config');
const FacebookStrategy = require('passport-facebook').Strategy;
const helper = require('../helpers');
module.exports = () => {
passport.serializeUser((user, done) => {
done(null, user.id);
});
passport.deserializeUser((id, done) => {
helper.findById(id).then(user => {
done(null, user);
}).catch('Error deserializing user');
});
//Issue is here
let authProcessor = (accessToken, refreshToken, profile, done) => {
//Find a user in the local MongoDB instance using the profile.id
helper.findRecord(profile.id).then(result => {
if (result)
{
done(null, result);
}
else
{
//Create a new user and return
helper.createNewUser(profile).then(newChatUser => {
done(null, newChatUser)
}).catch(error => console.log('Error when creating new user'));
}
});
}
passport.use(new FacebookStrategy(config.fb), authProcessor);
}Run Code Online (Sandbox Code Playgroud)
错误在于这一行:
passport.use(new FacebookStrategy(config.fb), authProcessor);
Run Code Online (Sandbox Code Playgroud)
我已经查看了谷歌和 Stack Overflow,但尚未找到解决方案。我希望有人可以帮助我。仅供参考,“config”模块的实现如下所示:
passport.use(new FacebookStrategy(config.fb), authProcessor);
Run Code Online (Sandbox Code Playgroud)
Pre*_*ige 12
你这样称呼它:
passport.use(new FacebookStrategy({}), function(){} )
Run Code Online (Sandbox Code Playgroud)
但应该是:
passport.use(new FacebookStrategy( {}, function(){} ) ) //Note where I moved the parenthesis
Run Code Online (Sandbox Code Playgroud)
FacebookStrategy接受 2 个参数,第一个是具有 id/secret/url 的对象,第二个是函数,并且new FacebookStrategy是您传递给passportjs.use().