Запустите сохранение функции пользователя только после обратного вызова аутентификации Google - PullRequest
0 голосов
/ 15 января 2020

Я создал аутентификацию 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 };
}

1 Ответ

0 голосов
/ 15 января 2020

Я установил firebase.auth().getRedirectResult() в if (user) { }.

вот так:

    firebase.auth().onAuthStateChanged(user => {
      this.setState({ user });

      if (user) {
        this.props.history.push("/user/settings");
    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);
      });
      }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...