【发布时间】:2019-07-05 19:46:18
【问题描述】:
我使用Passport 来实现 Google 登录功能。但是,当我从react 客户端应用程序发送axios 请求时,chrome 控制台上会出现一条错误消息。
客户端 - 反应(在端口 3000 上运行):
SignInForm.js组件中的axios请求(当用户点击登录按钮时触发):
googlelogin(){
axios.get('/api/users/google_auth')
.then(()=>console.log("success"))
.catch(err=>console.log(err))
}
控制台上的错误信息:
Error: Network Error
at createError (createError.js:17)
at XMLHttpRequest.handleError (xhr.js:87)
服务器端 - node.js(在端口 5000 上运行):
passport.js 代码:
passport.use(
new GoogleStrategy({
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackURL: '/api/users/google_auth/redirect'
},
(accessToken, refreshToken, profile, done) => {
console.log("called")
User.findOne({email: profile.id})
.then(user => {
console.log('googleLogin');
done(null,user);
})
.catch(err => {
done(err,null,{message:'fail'})
})
}
)
);
routes/api/users.js 代码:
router.get('/google_auth',passport.authenticate('google',{
scope:['profile']
}),()=>{console.log("test")})
router.get('/google_auth/redirect',(req, res)=>{
res.send("hi")
})
Chrome Devtools 网络点击日志:
我已经在 Youtube、Google、Github 和 StackOverflow 上进行了搜索。我不知道该怎么做才能解决这个问题。
【问题讨论】:
-
最好为您的 API 添加额外的日志记录,特别是围绕护照身份验证功能。看看这个答案,看看如何从 Passport 中提取错误:stackoverflow.com/questions/15711127/…。这将为您提供更多信息。
-
@tombraider 谢谢。我修改了代码,但服务器控制台没有像以前一样的响应。 passport.authenticate 函数的回调没有被执行..
标签: node.js reactjs express passport.js google-oauth