2011-09-29 2 views
1

타사 사이트에 iframe이 있습니다. iframe 내부에는 사용자가 FB Connect를 사용하여 인증하는 응용 프로그램이 있습니다. Ruby on Rails 사이트에서 omniauth gem을 사용하여 Facebook과의 연결을 처리하고 있습니다.타사 사이트의 iframe에서 FB Connect를 사용할 수 있습니까?

a) FB에 이미 로그인되어 있고 b) 내 세부 정보 사용 권한을 이미 부여한 경우 원활하게 작동합니다.

FB 연결이 Facebook에 전화를 걸 때 그 중 하나가 누락되면 모두 멈추고 FB 로고와 Facebook에 연결되는 링크가 표시됩니다. 링크를 클릭하면 내 iframe과 Facebook에 빠져 든다. 분명히 내가 돌아 왔을 때 - 돌아갈 iframe이 없으며 제 3 자 사이트에 더 이상 있지 않습니다.하지만 제 위치에 있습니다.

이 기술을 사용할 수 있습니까? 그리고 그렇다면 어디에서 잘못 될 수 있습니까? 내가 말했듯이 - a)와 b)가 충족되면 - 원활하게 작동합니다.

답변

1

iframe 내에서 Facebook으로 리디렉션 할 수 없으므로 최상위 수준 페이지로로드해야합니다. 그래서 FB 로고와 링크를 볼 수 있습니다. iframe 구조를 강제로 제거하기위한 것입니다. 중간 단계를 피하려면 최상위 리디렉션을 수행해야합니다 (일반적으로 top.location을 설정하는 일부 자바 스크립트 코드를 출력 함).

돌아 오는 길에 redirect_uri가 사이트에 직접 연결되는 대신 제 3 자 사이트를 가리 키도록 설정할 수도 있고 (또는 기본 설정 인 redirect_uri를 사용하여 보이지 않게 할 수도 있음), 또는 귀하의 페이스 북에서 app config를 실행하면 페이지가 최상위 레벨로로드되고 제 3 자 사이트로 리다이렉트하여 iframe으로 강제로 되돌려 보내도록합니다.

+0

오, 안돼 - 그런 동정. 일부 사이트에서는 팝업을 사용하는 것을 보았습니다. 그게 효과가 있니? 그래서 iframe 내부에서 메인 윈도우에서 팝업을 엽니 다. 페이스 북 연결 프로세스를 수행 한 다음 팝업을 닫습니다. 인증이 완료되었다는 것을 iframe에서 내 사이트에 알리는 방법은 없을 것이라고 생각합니다. 따라서 기술적으로 가능한지 확실하지 않은 iframe의 사이트에서 인증 된 쿠키가 '도착'으로 폴링 할 수 있습니까? – Joerg

+0

다소 이상한 흐름이지만 페이스 북의 인증 페이지를로드 한 다음 도메인의 페이지로 다시 리디렉션되는 새로운 창을 여는 것은 이론적으로 가능합니다. 그 페이지는 window.opener를 사용하여 iframe과 통신 한 일부 자바 스크립트를 출력 할 수 있습니다. 그러나 최상위 리디렉션을 수행 한 다음 완료되면 프레임으로 다시 이동하는 것이 더 쉬울까요? –

+0

찾았습니다. http://svpply.com/login처럼 보이는 것 같습니다. 따라서 iframe에 해당 URL을 추가하면 작동하도록 작동합니다. 나는 그들이 그것을 어떻게 구현했는지 확신 할 수 없다. 연결할 서버 측과 클라이언트 측 방법이 있음을 알 수 있습니다. 로그인 한 후에는 사용자 이름을 만듭니다. 따라서 서버 측 구현도 일부있는 것처럼 보입니다. 하지만 그래 - 나는 다른 단계가 무엇인지 알지 못한다. – Joerg

관련 문제