如何摆脱django-social-auth的facebook重定向中的#_ = _?

时间:2012-06-23 20:55:39

标签: django facebook django-socialauth

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置于“空白”状态。没有运气

那么,如何摆脱哈希的事情?

非常感谢!

3 个答案:

答案 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>