我该如何呈现使用facebook login登录的用户名?

时间:2019-07-16 17:49:46

标签: node.js reactjs express authentication passport.js

我使用Passport.js实现了Facebook登录。它可以在后端正常工作,并在数据库中引入ID和名称。问题是我找不到如何在我的react组件中显示名称。

一个朋友帮我写了这个axios电话,但是没有用。还有什么我可以尝试的吗?

return axios ({
        method: 'get',
        url: '/user',
        params: {},
        withCredentials: true
    }).then(result => {
      this.setState({ user: result.data }, () => {
          console.log("does this work?", result);
      });
    });

这是后端护照代码

passport.use(new FacebookStrategy({
        clientID: 1227008554140703,
        clientSecret: secrets.facebookSecret,
        callbackURL: "http://localhost:8080/facebook/callback"
    },
    function(accessToken, refreshToken, profile, done) {
        console.log(profile);
        return database.findOrCreateFacebookUser(profile.id, profile.displayName).then((user) => {
            console.log("user here", user);
            done(null, user)
        })
    }
));

passport.serializeUser(function(user, done) {
    console.log("serialize", user);
    done(null, user.id);
});

passport.deserializeUser(function(id, done) {
    console.log("deserialize");

    return database.getFacebookUser(id).then(user => {
        done(null, user);
    });
});


app.get('/user',
    (req, res) => {
        res.json(req.user);
    });

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

似乎您在请求中省略了凭据。应该是这样的:

return axios ({
        method: 'get',
        url: '/user',
        params: {},
        withCredentials: true,
        auth: {
           username: 'myusername',
           password: 'mypassword'
        }
    }).then(result => {
      this.setState({ user: result.data }, () => {
          console.log("does this work?", result);
      });
    });

另外,尝试捕获该请求中的错误并记录可能的错误。

然后,也许输入“ console.log(“这个工作吗?”,结果);“在setState上方只是为了更清楚