Javascript 如何在reactjs中重新加载时访问gapi.auth2以检查用户是否已登录?
当我使用react google登录通过google登录时,我需要在react js中维护登录会话 我已经创建了一个登录组件,在其中我呈现了“react GoogleLogin”提供的GoogleLogin组件 我正在我的头组件中调用我的登录组件 与登录相关的一切都已设置好,工作正常,但问题是当我重新加载页面时,用户会在状态设置为初始状态时注销 我假设,它可以通过gapi对象完成,gapi对象在窗口上全局可用。(我已经在html文件的头部添加了google api的脚本标记) 但是当我尝试这样做时-让auth2=gapi.auth2.getAuthInstance() 我知道auth2没有定义。 然而,gapi的定义是我在控制台上登录时可以看到的 单击LoginSAccess回调中的Login按钮后,我也可以访问auth2对象,但之前不能 因此,我有以下问题 我走对了吗? 如果是,我该如何进行 如果没有,我应该如何在react中维护google登录会话Javascript 如何在reactjs中重新加载时访问gapi.auth2以检查用户是否已登录?,javascript,reactjs,google-login,google-api-js-client,Javascript,Reactjs,Google Login,Google Api Js Client,当我使用react google登录通过google登录时,我需要在react js中维护登录会话 我已经创建了一个登录组件,在其中我呈现了“react GoogleLogin”提供的GoogleLogin组件 我正在我的头组件中调用我的登录组件 与登录相关的一切都已设置好,工作正常,但问题是当我重新加载页面时,用户会在状态设置为初始状态时注销 我假设,它可以通过gapi对象完成,gapi对象在窗口上全局可用。(我已经在html文件的头部添加了google api的脚本标记) 但是当我尝试这样做
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);
类登录扩展了React.Component{
建造师(道具){
超级(道具)
console.log(gapi);//gapi可用
让auth2=gapi.auth2.getAuthInstance();//此处无法访问auth2
}
响应日志=(响应)=>{
让auth2=gapi.auth2.getAuthInstance();//可以在这里访问auth2
让id\u token=response.getAuthResponse().id\u token;
让profile=response.getBasicProfile();
console.log(this);
//在这里调用api以验证后端上的令牌是否正常工作
fetch();
}
render(){
return();
}
}
常量mapStateToProps=状态=>({
…州
})
const mapDispatchToProps=调度=>({
setLoginInfo:(内容)=>调度(更新登录(内容))
})
导出默认连接(mapStateToProps、mapDispatchToProps)(登录);