2014-03-12 4 views
1

레일 4와 함께 제공되는 Turbolinks 자료를 사용하는 레일 애플리케이션을 제작하고 있습니다. 사용자 인증을 위해 Google+ 로그인 버튼을 사용하려고합니다.터보 링크로 Google+ 로그인

한 가지 경우를 제외하고는 모두 작동합니다. 사용자가 로그인하기 전에 둘 이상의 페이지를 방문하면 Google + 로그인 절차가 작동하지 않습니다. 기본적으로 터보 링크 스 마술은 Google+ 로그인 버튼을 깨뜨리고 있습니다. (사용자가 즉시 로그인하면 모든 것이 완벽하게 작동합니다.)

그렇다면 어디서 문제가 있는지 알 수 있습니다. google + js api가로드되면 숨겨진 iframe이 html 문서의 본문에 첨부됩니다. 이것은 터보 링크가 다른 페이지를로드 할 때 날아갑니다. 이 iframe은 Google+ 로그인 과정을 완료하는 데 필요합니다.

누구나 비슷한 다리를 건넜습니까? 터보 링크가 iframe을 제거하지 못하도록하는 방법을 잘 모르겠습니다. Google+ API를 다시 초기화하도록 할 수도 있지만 Google Plus 문서에 언급 된 내용은 없습니다.

어떤 통찰력에도 감사드립니다!

답변

2

나는 Facebook login buttonBugherd sidebar과 동일한 문제가 있습니다.
모든 페이지에서 구성 요소를 다시로드해야합니다 : 가져 오기 및 페이지 : 이벤트 변경. 난 당신이 거의 동일이의 Google+은 iframe으로 생각 할 수 있다고 생각

$(document) 
    .on('page:fetch', saveFacebookRoot) 
    .on('page:change', restoreFacebookRoot) 

: 여기

내가 페이스 북의 로그인에 사용하는 의사 코드입니다.

+0

팁 주셔서 감사합니다, 불행히도, 사랑이 없습니다. 특별한 iFrame을 다시로드하면 도움이되지 않습니다. 또한, 구글 API가 콘솔에 오류를 출력합니다 : "알 수없는 RPC 서비스 : oauth2relayReady : #####" –

+0

작동합니다! - 더 많이 파고 들자 마자 나는 이것을 작동시킬 수 있었다. 콘솔에서 이상한 오류가 발생합니다. 또한 일단 애플리케이션에 가입하면 dom에 또 다른 iframe이 연결됩니다. 이 두 번째 iframe은 정상적인 조건에서는 발생하지 않습니다. 정말 도움을 주셔서 감사합니다. 그러나 터보 링크를 버릴 것입니다. 해결책은 너무 약합니다. –