我正在使用hello.js在反应应用上使用twitter登录。
hello.init({
twitter: 'II7hpGaWFZ1n2dbpGzr59bxko',
});
我确实在https://auth-server.herokuapp.com
上注册了该应用首次加载页面时,会显示登录表单。用户可以点击按钮登录twitter,hello.js打开一个弹出窗口并进行身份验证。用户返回主页并显示安全内容
<button className="button button-red primary" name="login"
onClick={(e)=>{this.handleTwitterLogin(e)}}>
<i className="icon-twitter float-left"></i>Continue with Twitter
</button>
handleTwitterLogin = (event) => {
event.preventDefault()
event.stopPropagation()
hello.login('twitter', auth=>{
console.log('requesting twitter auth')
hello('twitter').api('me')
.then( result=>{
this.props.actions.login('twitter')
this.props.actions.updateUser({
username: result.name,
screen_name: result.screen_name,
image: result.profile_image_url_https
})
this.props.history.push('/')
})
})
}
到目前为止,这么好。如果用户退出,我将其从Twitter注销,退出我的应用程序并重定向到主页:
logout = () => {
hello.logout('twitter', ()=>{
this.props.actions.logout()
this.props.history.push('/')
})
}
主页现在再次显示登录表单,因为用户已注销。但是,如果用户点击&#34;使用Twitter登录&#34;再次按下按钮,似乎页面已刷新,网址从/
更改为/?login=
,并且未调用按钮的onClick handler handleTwitterLogin = (event) =>
函数。再次单击该按钮会按预期启动登录过程。我无法弄清楚调用什么代码来重新加载页面或如何调试它。