我已经研究了两者passport-facebook以及passport-facebook-token与 NestJS 的集成。问题在于 NestJS 使用自己的实用程序(例如 AuthGuard)抽象了通行证实现。
因此,记录的ExpressJS样式实现不适用于 NestJS。例如,这与@nestjs/passport包不兼容:
var FacebookTokenStrategy = require('passport-facebook-token');
passport.use(new FacebookTokenStrategy({
clientID: FACEBOOK_APP_ID,
clientSecret: FACEBOOK_APP_SECRET
}, function(accessToken, refreshToken, profile, done) {
User.findOrCreate({facebookId: profile.id}, function (error, user) {
return done(error, user);
});
}
));
Run Code Online (Sandbox Code Playgroud)
这篇博文展示了一种passport-facebook-token使用不符合AuthGuard.
@Injectable()
export class FacebookStrategy {
constructor(
private readonly userService: UserService,
) {
this.init();
}
init() {
use(
new FacebookTokenStrategy(
{
clientID: <YOUR_APP_CLIENT_ID>,
clientSecret: <YOUR_APP_CLIENT_SECRET>,
fbGraphVersion: 'v3.0',
},
async (
accessToken: …Run Code Online (Sandbox Code Playgroud) node.js passport-facebook passport.js nestjs passport-facebook-token