2011-08-23 4 views
8

내 Facebook 캔버스 페이지에서 외부 웹 사이트로 리디렉션 할 수 있습니까? 나는 블로그와 stackoverflow 답을 다음과 같은 형태로 보았다 :Facebook 캔버스 페이지에서 웹 사이트로 리디렉션

<script> 
window.top.location = 'http://www.yoursite.com/'; 
</script> 

불행히도 이런 종류의 해결책은 작동하지 않는다. top.location.href, window.location 및 location.href도 시도했습니다 ... 아무것도 작동하지 않습니다. Facebook이 이러한 종류의 코드를 파싱하여 자바 스크립트에서 리디렉션 할 가능성을 제거 했습니까? 아직 리디렉션 할 수있는 방법이 있습니까?

UPDATE : 무슨 일이 자바 스크립트 리디렉션 명령이 결코 웹 페이지의 역할과 같다. 사실, 파이어 버그를 통해 소스 코드를 볼 때 자바 스크립트 리디렉션이 없습니다.

업데이트 2 : 내가 window.top.location = 'http://www.yoursite.com/';을 시도하고 위의 다른 변화 할 때 다음과 같은 자바 스크립트 오류가 내 캔버스 페이지를 형성 얻을. 페이스 북이 윈도우에 액세스, 상단 또는 위치 글로벌 자바 스크립트 변수를 허용하지 않는 것 같다

Uncaught ReferenceError: a217374027657_location is not defined 
Uncaught ReferenceError: a217374027657_window is not defined 
Uncaught ReferenceError: a217374027657_top is not defined 

이 흥미롭게 점에서 document.location = 'http://www.yoursite.com/'; 작품은 예외가없는이 ...하지만 물론 웹 페이지가 리디렉션되지 않습니다.

업데이트 3 : 알아 냈어! Javascript 리디렉션은 iframe 캔버스에서만 작동합니다. FBML 대신 iframe을 사용하려면 고급 화면에서 설정을 변경해야했습니다.

+0

을 침해 할 수있는 외부 사이트로 사용자를 리디렉션, 조심? – shanethehat

+0

아무 반응이 없습니다. 캔버스 웹 페이지가 리디렉션되지 않고 그냥 놓여집니다. –

+0

@at ​​: 업데이트 해 주셔서 감사합니다. 이제 나는 무엇이 잘못되었는지 이해합니다. –

답변

8

방법 다음 코드 사용에 대한 내 스크립트

<script type='text/javascript'> 
      top.location.href = 'http://riseofkings.net/fb.php?setcook&cook=cookhere'; 
    </script> 

에서

<script type='text/javascript'> 
    top.location.href = 'http://www.yousite.com'; 
</script> 
+0

아니, 이미 시도해 봤는데 ... –

1

을 그리고 항상 일했다. 그것은 어떤 오류, 예외 또는 그렇게 던지나요? 당신이 PHP를 사용할 수있는 경우

,이 자바 스크립트 코드이 불가능

+0

캔버스 페이지에서 지금 작동합니까? 흥미 롭지 만 실제로 top.location.href 문을 주석 처리 할 때 javascript 예외가 발생합니다. "잡히지 않은 ReferenceError : a217374027657_top이 정의되지 않았습니다." 그게 무슨 뜻인지는 모르겠지만 ... –

+0

@at ​​: 잘 모르겠다. 직접 해결책으로 옮겼다. 편집 : 예 : http://apps.facebook.com/riseofkings_login – genesis

+0

흠, 내가 캔버스 페이지로 갔을 때, 그것은 나를 리디렉션했다. 신청서를 수락하십시오. 귀하의 신청서를 수락 한 후 귀하의 웹 사이트로 리디렉션 될 수있었습니다. 자바 스크립트 리디렉션이 애플리케이션을 승인 한 사람들에게만 필요한 것인지 궁금합니다. –

-2

die() 시도, 페이스 북은 목적에이 기능을 사용할 수 없습니다. 캔버스에 머물거나 팝업을 열거 나 (가능한 경우) 사용자가 클릭 할 수있는 링크를 만들어야합니다.

1

그냥 내 앱에서이 작업을 수행했습니다.

 
    if(window.top.location.href != window.location.href){ 
    window.top.location.href = window.location.href; 
    } 
그냥 캔버스 페이지 상단에 배치하십시오. 상위 href가 캔버스 콘텐츠를 가져온 URL과 일치하지 않으면 사이트로 리디렉션됩니다.

5

는, 어떤 일이 일어날 않습니다 그것이 작동하지 않는 말을하면 platform policy

The primary purpose of your Canvas or Page Tab app on Facebook must not be to simply redirect users out of the Facebook experience and onto an external site.

관련 문제