Как получить доступ к gapi.auth2 при новой перезагрузке в activjs, чтобы проверить, вошел ли пользователь в систему? - PullRequest
1 голос
/ 08 июня 2019

Мне нужно поддерживать сеанс входа в учетную запись реагировать при входе в систему через Google с использованиемact-google-login

Я создал компонент входа, внутри которого я рендеринг компонента GoogleLogin, предоставленного «реагировать-google-Логин.

Я вызываю свой компонент Login внутри компонента заголовка.

Все, что связано с входом, настроено и работает нормально, но проблема в том, что при перезагрузке страницы пользователь выходит из системы, как пользовательсостояние установлено в начальное состояние.

Я предположил, что это может быть сделано через объект gapi, который доступен глобально в окне.(Я уже добавил тег script для google api внутри заголовка моего html-файла)

, но когда я пытаюсь это сделать - пусть auth2 = gapi.auth2.getAuthInstance ();

Iполучить, что auth2 не определено.однако гэппи определяется так, как я вижу, когда я вхожу в консоль.

Я также могу получить доступ к объекту auth2, как только я нажму кнопку «Войти» внутри функции обратного вызова loginsuccess, но не раньше.

Итак, у меня есть следующие вопросы.

Я на правильном пути?если да, то как мне действовать?

Если нет, что мне нужно сделать, чтобы сеанс входа в систему Google реагировал?

class Login extends React.Component{
      constructor(props){
       super(props)
       console.log(gapi);  // gapi is available
       let auth2 = gapi.auth2.getAuthInstance();  // auth2 is not accessible here 
     }


    responseGoogle = (response) => {
      let auth2 = gapi.auth2.getAuthInstance();  // auth2 is accessible here 
      let id_token = response.getAuthResponse().id_token;
      let profile = response.getBasicProfile();
      console.log(this);

// api call here to validate the token on the backend which works fine

      fetch();  
}
render(){

        return(<GoogleLogin
            clientId="CLIENT_ID"
            buttonText="Login"
            onSuccess={this.responseGoogle}
            onFailure={this.responseGoogle}
            cookiePolicy={'single_host_origin'}
          />);
    }
}
const mapStateToProps = state => ({
  ...state
 })

const mapDispatchToProps = dispatch => ({
  setLoginInfo: (content) => dispatch(upDateLogin(content))
 })

export default connect(mapStateToProps,mapDispatchToProps)(Login);
...