Ответ 1
Ну, это может быть не точное решение, но добавление следующего script в голову поможет в устранении проблемы:
<script type="text/javascript">
if (window.location.hash == '#_=_') {
window.location.hash = '';
}
</script>
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 на что-то "пустое". Не повезло
Итак, как мне избавиться от хэш-вещи?
Спасибо большое!
Ну, это может быть не точное решение, но добавление следующего script в голову поможет в устранении проблемы:
<script type="text/javascript">
if (window.location.hash == '#_=_') {
window.location.hash = '';
}
</script>
Похоже, что Facebook всегда добавляет '# _ = _', даже если поставляется redirect_uri. Поскольку это поведение противоречит сообщению в Facebook , эта функция была отправлена на Facebook как bug. Facebook предоставил официальный ответ на эту ошибку, утверждая, что добавление "# _ = _" - это функция дизайна, которая предотвращает потенциальную проблему безопасности.
Facebook предоставляет следующие рекомендации для борьбы с нежелательным фрагментом uri: "Если эстетика или поведение на стороне клиента из результирующего URL-адреса вызывает беспокойство, можно было бы использовать window.location.hash(или даже переадресация на серверной стороне), чтобы удалить оскорбительные символы."
Похоже, что приведенный выше javascript является допустимым решением, даже если он немного взломан.
<script type="text/javascript">
if (window.location.href.indexOf('#') > -1) {
window.location.href = '/';
}
</script>