Как избавиться от # _ = _ в перенаправлении facebook django-social-auth?

django-social-auth перенаправляет меня на /mypage#_=_ при использовании бэкэнда Facebook.

Поскольку я работаю с jquery mobile на лицевой стороне, я не могу это принять.

Я нашел: https://developers.facebook.com/blog/post/552/ на сайте разработчиков facebook.

Изменение поведения переадресации сеанса

На этой неделе мы начали добавлять фрагмент # _ = _ в redirect_uri, когда это поле остается пустым. Убедитесь, что ваше приложение может поведение.

Итак, я попытался настроить SOCIAL_AUTH_LOGIN_REDIRECT_URL в настройках django-social-auth на что-то "пустое". Не повезло

Итак, как мне избавиться от хэш-вещи?

Спасибо большое!

Ответ 1

Ну, это может быть не точное решение, но добавление следующего script в голову поможет в устранении проблемы:

<script type="text/javascript">
   if (window.location.hash == '#_=_') {
      window.location.hash = '';
   }
</script>

Ответ 2

Похоже, что Facebook всегда добавляет '# _ = _', даже если поставляется redirect_uri. Поскольку это поведение противоречит сообщению в Facebook , эта функция была отправлена ​​на Facebook как bug. Facebook предоставил официальный ответ на эту ошибку, утверждая, что добавление "# _ = _" - это функция дизайна, которая предотвращает потенциальную проблему безопасности.

Facebook предоставляет следующие рекомендации для борьбы с нежелательным фрагментом uri: "Если эстетика или поведение на стороне клиента из результирующего URL-адреса вызывает беспокойство, можно было бы использовать window.location.hash(или даже переадресация на серверной стороне), чтобы удалить оскорбительные символы."

Похоже, что приведенный выше javascript является допустимым решением, даже если он немного взломан.

Ответ 3

<script type="text/javascript">
    if (window.location.href.indexOf('#') > -1) {
        window.location.href = '/';
    }
</script>