django-social-auth在使用Facebook后端时将我重定向到/mypage#_=_
。
当我在前端使用jquery mobile时,我无法接受。
我在facebook开发者网站上找到了https://developers.facebook.com/blog/post/552/。
会话重定向行为的更改
本周,我们开始在redirect_uri中添加片段#_ = _ 此字段留空。请确保您的应用可以处理此问题 行为。
所以我尝试将django-social-auth设置中的SOCIAL_AUTH_LOGIN_REDIRECT_URL
置于“空白”状态。没有运气
那么,如何摆脱哈希的事情?
非常感谢!
答案 0 :(得分:15)
嗯,这可能不是确切的解决方案,但是向您添加以下脚本将有助于解决问题:
<script type="text/javascript">
if (window.location.hash == '#_=_') {
window.location.hash = '';
}
</script>
答案 1 :(得分:7)
即使提供了redirect_uri,看起来Facebook总是附加'#_ = _'。由于此行为与Facebook的blog post相反,此功能已作为bug提交给Facebook。 Facebook已经对此漏洞提供了官方回复,声称附加'#_ = _'是一种设计功能,可以防止潜在的安全漏洞。
Facebook为处理不需要的uri片段提供了以下建议:“如果产生的URL的美学或客户端行为受到关注,则可以使用window.location.hash(甚至是您自己的服务器端重定向)以删除有问题的字符。“
看来上面提供的javascript是一个有效的解决方案,即使它有点hacky。
答案 2 :(得分:0)
<script type="text/javascript">
if (window.location.href.indexOf('#') > -1) {
window.location.href = '/';
}
</script>