2012-05-22 7 views
2

StackOverflow에서 this one을 비롯한 많은 질문과 답변을 읽었으며 아무 것도 작동하지 않습니다. 내가 본 모든 대답에 대한 나의 질문은 'Safari에서 작동합니까?'입니다.로그인 후 Facebook 리디렉션

Safari에서이 기능을 사용하려고합니다. Chrome 및 Firefox에서 정상적으로 작동합니다. 하지만 Safari에서는 로그인 화면이 멈추고 "URL이있는 프레임에 액세스 할 때 안전하지 않은 JavaScript 시도"메시지가 나타납니다.

캔버스 앱이 있습니다. 로그인 한 후 사용자를 로그인하고 페이지로 리디렉션하고 싶습니다. 로그인 한 후 바로 리디렉션하려고합니다. 나는 내 응용 프로그램과 같은 도메인으로 URL에 window.location 설정

  • 합니다 (all_data 인수로 서명 요청에 전달 된 일부 데이터) 페이스 북 URL로 window.top.location 설정

    1. 을 시도했습니다.

    2. auth.login 이벤트에 가입 사파리에 대한이 작품의

    없음 로그인하지 않으려면 콜백에 리디렉션을 가하고있다

  • 리디렉션을 넣어. 나는 그것을 할 수있는 방법이 없다고 생각하기 시작했습니다. Nitzan 토 메르에 대응

    function doSomething() 
    { 
        FB.login(
        function(loginResponse) 
        { 
         if (loginResponse.authResponse) 
         { 
         window.top.location = "my url" 
         } 
        }, 
        { 
         scope:"some,scope" 
        } 
    ); 
    } 
    } 
    

    가 여기 사파리 작동하지 않지만 다른 사람과 작동 하는가에 해당하는 코드입니다,이 문제에 대한 해결책의 더없는

    function myThing() 
    { 
        FB.login(function(loginResponse) 
        { 
         if (loginResponse.authResponse) 
         { 
         FB.api('/me', function(response) 
         { 
          window.location = "http://my_app.com?x=" + response.xyz; 
         }); 
         } 
        }, 
        { 
         scope:"scopes" 
        } 
    ); 
    } 
    
  • 답변

    0

    로그인 프로세스가 약간 빨라지면서 문제가 발생하고 콜백이 호출되지 않습니다. 콜백 (호출되지 않은)에서 중단 점을 설정했지만 중단 점이 (다른 윈도우의 컨텍스트에서 실행 되었기 때문에) 어떤 이유로 작동하지 않을 수도 있다고 생각했습니다.

    어쨌든 문제는 (문서가 선택 사항 인 것으로 보이는) 채널 파일이 제대로 작동하지 않아서 Safari에서는 문제가 발생했지만 다른 브라우저에서는 문제가 발생하지 않았기 때문입니다.

    0

    하지만, 더 많은 "해결 방법", 비록 여전히 window.top.location을 사용하지만 콜백이 아닌 어쩌면 작동 할 것입니다. (콜백이 어디에서 실행되는지는 확실하지 않습니다. 실행하는 fb SDK이므로 어쩌면 iframe 내부에 fb iframe).

    클라이언트 측 인증을 사용하는 대신 server side flow을 사용할 수 있습니다. window.top.location을 사용하여 사용자를 oauth 대화 상자로 리디렉션하여 시작하기 때문에 전체 프로세스가 상단 창에서 발생합니다.

    프로세스가 끝나면 사용자가 redirect_uri로 사용자를 리디렉션합니다. 사용자가 원하는 곳에서 사용자를 리디렉션 할 수 있습니다.

    도움이되기를 바랍니다. 또한 Facebook Platform Policies에는

    13.이 있습니다. Facebook에서 캔버스 또는 페이지 탭 응용 프로그램의 주요 목적은 페이스 북 환경 에서 사용자를 외부 사이트로 리다이렉트하지 않아야합니다.

    +0

    감사합니다. 설명을 위해 캔버스 앱에서 다른 사이트로 이동하지 않고 화면 사이를 이동하려고합니다. – Joe

    +0

    그럼 왜'window.top.location'을 사용하고 싶습니까? 단지'window.location'을 사용하여 메인 윈도우가 아닌 iframe의 url을 변경하십시오. –

    +0

    그게 전부입니다. 이 방법은 Chrome 및 FF에서 작동하지만 Safari에서는 작동하지 않습니다. – Joe

    관련 문제