2012-01-24 4 views
1

나는 omniauth-facebook으로 이사했으며 훌륭하게 작동합니다. 로그인 버튼으로 팝업을 사용하려고했지만 작동하지 않습니다.Omniauth-facebook : 로그인 팝업이 리다이렉트되지 않습니다

레일 앱의 경우 https://github.com/mkdynamic/omniauth-facebook/blob/master/example/config.ru에 대한 예를 따랐습니다. 링크를 클릭하면 팝업을 표시하고 내가 인증을받을 있지만, 팝업 닫을 때 나는 대상 페이지가 처리 로그에서 볼 수 있지만, 로그인 페이지에 남아 : 그것은 거의 작동

<div id="fb-root"></div> 

    <script type="text/javascript"> 
     window.fbAsyncInit = function() { 
     FB.init({ 
      appId : '#{ENV['APP_ID']}', 
      status : true, // check login status 
      cookie : true, // enable cookies to allow the server to access the session 
      oauth : true, // enable OAuth 2.0 
      xfbml : true // parse XFBML 
     }); 
     }; 

     (function(d) { 
     var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
     js = d.createElement('script'); js.id = id; js.async = true; 
     js.src = "//connect.facebook.net/en_US/all.js"; 
     d.getElementsByTagName('head')[0].appendChild(js); 
     }(document)); 

     $(function() { 
     $('a').click(function(e) { 
      e.preventDefault(); 

      FB.login(function(response) { 
      if (response.authResponse) { 
       $.get('/auth/facebook/callback'); 
      } 
      }, { scope: '#{SCOPE}' }); 
     }); 
     }); 
    </script> 

    <p> 
     <a href="#">Connect to FB</a> 
    </p> 

, 게스트와 회원 모두에게 제공되는 링크를 클릭하면 회원 버전을 얻을 수 있으며 로그인이 성공했다는 또 다른 증거가됩니다.

그럼 로그인이 성공하더라도 브라우저가 리디렉션되지 않는 이유는 무엇입니까? 사용자를 기록하는 컨트롤러 메소드 (예 : "respond_to"와 같은 특수 형식)를 수정해야합니까?

감사

답변

0

을 사용자가 FB.login 대화 상자가 닫히고을 통해 로그인하는 사용자가 다시 메인 창으로 이동하고, 콜백이 호출됩니다.

콜백에서 당신은 $.get('/auth/facebook/callback');입니다. 이것은 ajax 호출입니다.

리디렉션은 어디에 있습니까?

+0

리디렉션은/auth/facebook/callback (UserSessionsControler # create_with_provider)에 의해 호출되는 컨트롤러 메서드에 있습니다. – Nycen

+0

그것은 아약스 요청입니다. 그 자체로 페이지가 바뀌지는 않습니다. 당신이 [서버로부터 뭔가를 얻고 있기 때문에] 이상하게 보입니다. (http://api.jquery.com/jQuery.get/) 그것으로 아무것도하지 마라. – ori

+0

음, response_to를 format.js와 리다이렉션과 함께 사용하여 뭔가를하고 있다고 생각했지만, 포맷팅 (format.html)을 통해 일어나는 일을 추적 할 때 호출되지 않습니다. 또는 페이지를 다시로드하는 rjs 뷰를 렌더링해야합니까? – Nycen

0

이니셜 라이저의 페이스 북 공급자 정보에 :authorize_params => { :display => 'popup' }을 추가하십시오.

관련 문제