Мне нужно поддерживать сеанс входа в учетную запись реагировать при входе в систему через 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);