使用Facebook OAuth对节点进行身份验证

时间:2019-09-17 20:15:35

标签: facebook express authentication

我有一个关于使用Facebook OAuth令牌验证用户身份的问题。 Passport确实检查用户是否存在,它向数据库添加了一个条目,甚至生成了令牌,但是当我尝试使用邮递员在标头(授权:令牌)中使用生成的令牌访问受保护的路由时,它会一直返回未经授权的401

代码如下:

passport-config.js

max

login.js:

name

users.js:

passport.use(
  'facebookToken',
  new FacebookTokenStrategy(
    {
      clientID: passportConfig.auth.facebook.clientID,
      clientSecret: passportConfig.auth.facebook.clientSecret
    },
    async (accessToken, refreshToken, profile, done) => {
      try {
        console.log('profile', profile);
        console.log('accessToken', accessToken);
        console.log('refreshToken', refreshToken);

        let [facebookID, username, email] = [
          profile.id,
          profile.username || profile.displayName,
          profile.emails[0] ? profile.emails[0].value : null
        ];

        const existingUser = await models.user.findOne({
          where: {
            facebookID: facebookID
          }
        });

        console.log('existingUser', existingUser);
        if (existingUser) {
          return done(null, existingUser);
        }
        const newUser = {
          facebookID: facebookID,
          username: username,
          email: email
        };
        console.log('newUser', newUser);
        await models.user.create(newUser);
        done(null, newUser);
      } catch (error) {
        done(error, false, error.message);
      }
    }
  )
);

0 个答案:

没有答案