Я создал аутентификацию Google в React + Firebase. Успешно я добавил эту функцию, но в настоящее время она вызывает firebase.auth().getRedirectResult()
каждый раз, когда они приходят домой. Я хочу назвать это только после обратного вызова аутентификации Google .
class Home extends Component {
constructor(props) {
super(props);
this.state = {
user: null
};
}
async componentWillMount() {
firebase.auth().onAuthStateChanged(user => {
this.setState({ user });
if (user) {
this.props.history.push("/user/settings");
}
});
// Want to call this only after google authentication callback
firebase
.auth()
.getRedirectResult()
.then(result => {
if (result.credential) {
var token = result.credential.accessToken;
console.log("token", token);
}
var user = result.user;
this.props.createUser(user);
})
.catch(function(error) {
console.log("error", error);
});
onLogin = () => {
const provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithRedirect(provider);
};
render() {
return (
// Signin with Google
<button className="btn btnPrimary" onClick={this.onLogin}>
<span>Google Signin</span>
</button>
);
}
}
function mapStateToProps({ user }) {
return { user: user };
}