Authentication 谷歌登录问题
我正在尝试用Redux将google登录集成到我的应用程序(MERN)电子商务站点。当我用电子邮件和密码登录,当我用谷歌登录时,一切都很完美,这也很有效,但是有些部分我无法再访问了,我会获得res.status 401 0r 500,具体取决于我的个人情况。如果我记录我的用户信息,一切都是一样的。。。我绝望了。 我的问题是这看起来像是谷歌的问题还是编码的问题。Authentication 谷歌登录问题,authentication,react-google-login,Authentication,React Google Login,我正在尝试用Redux将google登录集成到我的应用程序(MERN)电子商务站点。当我用电子邮件和密码登录,当我用谷歌登录时,一切都很完美,这也很有效,但是有些部分我无法再访问了,我会获得res.status 401 0r 500,具体取决于我的个人情况。如果我记录我的用户信息,一切都是一样的。。。我绝望了。 我的问题是这看起来像是谷歌的问题还是编码的问题。 如果是代码问题,可以在需要时共享代码片段/////// const client = new OAuth2Client(process.
如果是代码问题,可以在需要时共享代码片段///////
const client = new OAuth2Client(process.env.GOOGLE_CLIENT_ID);
const googleLogin = asyncHandler(async (req, res) => {
const { idToken } = req.body;
client
.verifyIdToken({ idToken, audience: process.env.GOOGLE_CLIENT_ID })
.then((response) => {
console.log("GOOGLE LOGIN RESPONSE", response);
const { email_verified, name, email } = response.payload;
console.log("=====>", response.payload);
if (email_verified) {
User.findOne({ email }).exec((err, user) => {
if (user) {
const token = jwt.sign({ _id: user._id }, process.env.JWT_SECRET, {
expiresIn: "7d",
});
const { _id, email, name, isAdmin } = user;
return res.json({ _id, email, name, isAdmin, token });
} else {
let password = email + process.env.JWT_SECRET;
user = new User({ name, email, password });
user.save((err, data) => {
if (err) {
console.log("ERROR GOOGLE LOGIN ON USER SAVE", err);
return res.status(400).json({
error: "User signup failed with google",
});
}
const token = jwt.sign(
{ _id: data._id },
process.env.JWT_SECRET,
{ expiresIn: "7d" }
);
const { _id, email, name, isAdmin } = data;
return res.json({ _id, email, name, isAdmin, token });
});
}
});
} else {
return res.status(400).json({
error: "Google login failed. Try again",
});
}
});
});
/////谷歌//////
import React from "react";
import axios from "axios";
import GoogleLogin from "react-google-login";
const Google = ({ googleLog }) => {
const responseGoogle = (response) => {
console.log(response.tokenId);
axios({
method: "POST",
url: `${process.env.REACT_APP_API}/google-login`,
data: { idToken: response.tokenId },
})
.then((response) => {
console.log("GOOGLE LOGIN SUCCESS", response.data);
googleLog(response.data);
localStorage.setItem("userInfo", JSON.stringify(response.data));
})
.catch((error) => {
console.log("GOOGLE LOGIN ERROR", error);
});
};
return (
<div className="pb-3">
<GoogleLogin
clientId={`${process.env.REACT_APP_GOOGLE_CLIENT_ID}`}
//clientId="554514820450-
je21h5tlk31a62mm1hv1kj8p8vf497si.apps.googleusercontent.com"
onSuccess={responseGoogle}
onFailure={responseGoogle}
render={(renderProps) => (
<button
onClick={renderProps.onClick}
disabled={renderProps.disabled}
className="btn btn-danger btn-md btn-block"
>
{" "}
<i className="fab fa-google pr-2"></i>
login with google
</button>
)}
cookiePolicy={"single_host_origin"}
/>
</div>
);
};
export default Google;
这是谷歌问题的可能性微乎其微。不清楚你所说的我无法理解的某些部分是什么意思。分享代码片段,并指出似乎功能不正常的部分
const googleLog = (response) => {
console.log("googlelogin response =>", response.isAdmin);
dispatch({
type: USER_LOGIN_SUCCESS,
payload: response,
});
if (dispatch) {
const push = history.push;
setTimeout(() => push(redirect), 2000);
}
};