I have an issue about GoogleLogin component in react. Here is my code:
import React, { useState } from "react";
import { Avatar, Button, Typography, Paper, Grid, Container } from "@mui/material";
import { GoogleLogin } from "react-google-login";
import LockOutlinedIcon from "@mui/icons-material/LockOutlined";
import Input from "./Input";
import Icon from "./icon";
import { useDispatch } from "react-redux";
import { useNavigate } from "react-router-dom";
import useStyles from "./styles";
import { Password } from "@mui/icons-material";
const Auth = () => {
const classes = useStyles();
const [showPassword, setShowPassword] = useState(false);
const [isSignup, setIsSignup] = useState(false);
const dispatch = useDispatch();
const navigate = useNavigate();
const handleSubmit = () => {
};
const handleChange = () => {
};
const handleShowPassword = () => setShowPassword((prevShowPassword) => !prevShowPassword);
const switchMode = () => {
setIsSignup((prevIsSignup) => !prevIsSignup);
handleShowPassword(false);
};
const googleSuccess = async (res) => {
const result = res?.profileObj;
const token = res?.tokenId;
try {
dispatch({ type: "AUTH", data: { result, token } });
navigate('/');
} catch (error) {
console.log(error);
}
};
const gooleFailure = () => {
console.log("Google Sign In was unsuccessful. Try again later");
};
return (
<Container component="main" maxWidth="xs">
<Paper className={classes.paper} elevation={3}>
<Avatar className={classes.avatar}>
<LockOutlinedIcon />
</Avatar>
<Typography variant="h5">{isSignup ? 'Sign Up':'Sign In'}</Typography>
<form className={classes.form} onSubmit={handleSubmit}>
<Grid container spacing={2}>
{isSignup && (
<>
<Input name="firstName" label="First Name" handleChange={handleChange} autoFocus half />
<Input name="firstName" label="First Name" handleChange={handleChange} half />
<Input name="lastName" label="Last Name" handleChange={handleChange} half />
</>
)}
<Input name="email" label="Email Address" handleChange={handleChange} type="email" />
<Input name="password" label="Password" handleChange={handleChange} type={showPassword ? "text" : Password} handleShowPassword={handleShowPassword} />
{isSignup && <Input name="confirmPassword" label="Repeat Password" handleChange={handleChange} type="password" />}
</Grid>
<Button type="submit" fullWidth variant="contained" color="primary" className={classes.submit}>
{isSignup ? 'Sign Up' : 'Sign In'}
</Button>
<GoogleLogin
clientId="CLEINT ID"
render={(renderProps)=>{
<Button className={classes.googleButton} color="primary" onClick={renderProps.onClick} disabled={renderProps.disabled} startIcon={<Icon />} variant="contained">
Google Sign In
</Button>
}}
//buttonText="Google Sign In"
onSuccess={googleSuccess}
onFailure={gooleFailure}
cookiePolicy="single_host_origin"
>
</GoogleLogin>
<Grid container justify="flex-end">
<Grid item>
<Button onClick={switchMode}>
{ isSignup ? 'Already have an account? Sign In' : "Don't have an account? Sign Up" }
</Button>
</Grid>
</Grid>
</form>
</Paper>
</Container>
);
}
export default Auth;
For somehow reason I cant see the google sign in button in my website. When I open console, it always shows 'Google Sign In was unsuccessful. Try again later'
which is wired, it means it logs in failed, but I dont even see the login button. I have already set up the right client id but I didn't put it there. So it cant be the reason. I also try to use return outside the render in googleLogin component. But it still doesn't work.