我使用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);
});
感谢您的帮助!
答案 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上方只是为了更清楚