我正在使用护照来实现在我的应用程序上登录FB或谷歌。
我成功地创建了一个不存在的个人资料,但现在我不明白当我想登录时如何将这些信息发送到前面。res.cookie(blabla)
,但前面不能用。res.send(blabla)
只是打开一个json文件。
我肯定漏掉了什么,但我不知道是什么。
这是我的护照js文件。
import passport from 'passport';
import { UsersService } from './../services/users.service';
import { AuthService } from './../services/auth.service';
import * as jwt from 'jsonwebtoken';
let FacebookStrategy = require('passport-facebook').Strategy;
const usersService = UsersService.getInstance();
module.exports = function () {
passport.use('facebook', new FacebookStrategy({
clientID : CLIENTID,
clientSecret : CLIENTSECRET,
callbackURL : 'http://localhost:3000/auth/facebook/callback',
profileFields: ['id', 'emails', 'name']
},
function(access_token:any, refresh_token:any, profile:any, done:any) {
process.nextTick(function() {
usersService.getByEmail(profile.emails[0].value).then((result) => {
if(result.email == profile.emails[0].value) {
console.log('EXISTE');
const userToken = {
email: result.email,
id: result.id
};
const secret: any = process.env.JWT_SECRET;
const token = jwt.sign(userToken, secret);
let newUser : any = result;
newUser.jwtoken = token;
console.log(newUser)
return done(null, newUser)
} else{
console.log('EXISTE PAS')
let user: any = {
email : profile.emails[0].value,
username : profile.username
}
usersService.create(user).then(result => {
return done(null, user)
})
}
})
});
}
))
}
这是我的路由文件
router.get('/facebook', passport.authenticate('facebook', { scope: 'email' }))
router.get('/facebook/callback',
passport.authenticate('facebook', {
session: false,
failureRedirect : 'http://localhost:4200/auth/signin'
}), (req: any, res: Response) => {
let token: any = req.user.jwtoken;
res.send(token).redirect('http://localhost:4200/')
}
);
所以,我尝试了其他的事情的重定向。
router.get('/facebook', passport.authenticate('facebook', { scope: 'email' }))
router.get('/facebook/callback',
passport.authenticate('facebook', {
session: false,
failureRedirect : 'http://localhost:4200/auth/signin'
}), (req: any, res: Response) => {
let user: any = req.user;
res.redirect('http://localhost:3000/users/me', user);
}
);
但现在出现了一个错误
FacebookTokenError: This authorization code has been used.
at Strategy.parseErrorResponse (/home/alex/eygdev/EYG_post-WCS-internship/node_modules/passport-facebook/lib/strategy.js:198:12)
at Strategy.OAuth2Strategy._createOAuthError (/home/alex/eygdev/EYG_post-WCS-internship/node_modules/passport-oauth2/lib/strategy.js:405:16)
at /home/alex/eygdev/EYG_post-WCS-internship/node_modules/passport-oauth2/lib/strategy.js:175:45
at /home/alex/eygdev/EYG_post-WCS-internship/node_modules/oauth/lib/oauth2.js:191:18
at passBackControl (/home/alex/eygdev/EYG_post-WCS-internship/node_modules/oauth/lib/oauth2.js:132:9)
at IncomingMessage.<anonymous> (/home/alex/eygdev/EYG_post-WCS-internship/node_modules/oauth/lib/oauth2.js:157:7)
at IncomingMessage.emit (events.js:203:15)
at IncomingMessage.EventEmitter.emit (domain.js:448:20)
at endReadableNT (_stream_readable.js:1145:12)
at process._tickCallback (internal/process/next_tick.js:63:19)
我真的不明白为什么我得到这个错误 因为没有人登录我的网站。