2012-06-23 1 views
11

Facebook 백엔드를 사용할 때 django-social-auth가 /mypage#_=_으로 리디렉션됩니다.django-social-auth의 facebook 리디렉션에서 # _ = _을 제거하는 방법은 무엇입니까?

프런트 엔드에서 jquery mobile으로 작업 중이므로 허용 할 수 없습니다.

발견 : 페이스 북 개발자 사이트에서 https://developers.facebook.com/blog/post/552/. 세션 리디렉션 동작

이번 주에

변경, 우리는 조각을 추가하기 시작 # _ = _ 이 필드가 비어있는 redirect_uri로한다. 앱이 동작을 처리 할 수 ​​있는지 확인하세요.

그래서 아무 것도없는 '장황한 사회'설정에서 SOCIAL_AUTH_LOGIN_REDIRECT_URL을 설정하려고했습니다. 행운을 빌어 요.

그래서 어떻게 해시를 없앨 수 있습니까?

고마워요!

+0

HTMLParser 또는 정규식을 사용하여 해당 부분을 제거 해봤습니까? –

+0

아니, 나는 그것이 단지 "해킹"일 것이라고 생각했기 때문에, 어쨌든 나는 이런 식으로해야만하는 것 같다. ( – wzr1337

+1

페이스 북이 말했을 때 - "귀하의 앱이이 행동을 처리 할 수 ​​있는지 확인하십시오." FB 끝 부분에서 이것을 구성 할 플래그가 없다는 것을 의미한다고 생각하십시오 :) –

답변

14

음이 정확한 해결책이 될 수 있지만, 수 없습니다 당신의 문제를 해결에 도움이 될 머리에 추가 스크립트 다음 : 페이스 북은 항상 '# _ = _'경우에도를 추가처럼

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

이것은 문제를 해결하지 못합니다. 단지 해킹 일뿐입니다. – commadelimited

7

이 보이는 redirect_uri가 제공됩니다. 이 행동은 Facebook의 blog post에 반하는 것이므로이 기능은 Facebook에 bug으로 제출되었습니다. Facebook은 '# _ = _'을 추가하는 것이 잠재적 인 보안 결함을 방지하는 디자인 기능이라고 주장하는이 버그에 대한 공식적인 응답을 제공했습니다.

Facebook은 원하지 않는 URI 조각을 처리하기 위해 다음과 같은 조언을 제공합니다. "결과 URL의 미학이나 클라이언트 측 동작이 문제가되는 경우 window.location.hash를 사용할 수 있습니다 (또는 문제의 문자를 제거하기 위해 자신의 서버 측 리다이렉션). "

위에서 제공된 javascript는 조금 해킹 된 경우에도 유효한 해결책입니다.

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