![](/img/trans.png)
[英]IOS Facebook Authentication Using node.js passport-facebook-token
[英]500 Internal Server Error in passport-facebook-token implementation using Node.js and express.js
我正在使用https://www.npmjs.com/package/passport和https://www.npmjs.com/package/passport-facebook-token ZBB30E85411B546DF4129672
这是我在护照配置文件中的代码:
passport.use(
new FacebookTokenStrategy(
{
clientID: config.FACEBOOK_CLIENT_ID,
clientSecret: config.FACEBOOK_CLIENT_SECRET,
fbGraphVersion: 'v3.0',
},
(accessToken, refreshToken, profile, done) => {
User.findOne(
{ 'facebookProvider.id': profile.id },
(error: any, user: any) => {
if (!user) {
const newUser = new User({
name: profile.displayName,
email: profile.emails[0].value,
facebookProvider: { id: profile.id, token: accessToken },
imageProfile: profile.photos[0].value,
});
newUser.save((error, result) => {
if (error) {
return done(error);
}
return done(null, result);
});
}
return done(error, user);
}
);
}
)
);
以下是我的路线处理程序:
const authRouter = express.Router();
authRouter
.route('/facebook')
.get(
passport.authenticate('facebook-token'),
async (req: Request, res: Response) => {
if (req.user) {
const accessToken: String = jwt.sign(
{ user: req.user },
config.JWT_SECRET_KEY,
{
expiresIn: config.TOKEN_LIFE_TIME,
}
);
return sendSuccesResponse(res, 200, accessToken);
}
return sendErrorResponse(res, 400, 'Something went wrong');
}
);
export default authRouter;
另外,我在 index.ts 文件中初始化了护照,该文件是 API 的入口点,并导入了护照配置文件:
import './config/passport';
.
.
.
app.use(passport.initialize());
app.use('/api/v1/oauth2', authRouter);
Moreover, I got the token from Facebook and when I request my API with the provided token, Facebook can authenticate and return the user profile but after authentication and creating a new user or if the user already exists in DB, then it does not go to我想为用户生成 JWT 令牌并返回给用户的路由处理程序。
我在 postman 中收到以下错误: 500 internal server error
经过一番挣扎,我发现我必须为passport.authenticate
function提供第二个参数{ session: false }
。
下面的代码工作得很好:
passport.authenticate('facebook-token', { session: false })
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.