2012-08-15 2 views
4

기존 facebook 계정을 통해 사이트에 로그인하고 있습니다. 그래서 페이스 북 응용 프로그램을 등록하고 api비밀development.rbproduction.rb 개의 파일에 저장했습니다. 그런 다음 이것을 구현하기 위해 omniauth-facebook gem + devise gem을 사용했습니다. 그것은 완벽하게 작동합니다.Rails + omniauth + facebook - csrf가 발견되었습니다.

그런데 사용자는 내부 인증 (기밀로) 또는 페이스 북 계정을 사용하여 로그인 할 수 있습니다.

그러나 이상한 문제가 있습니다. 그것은 완벽하게 작동 내가 응용 프로그램을 등록한 페이스 북 계정에 로그인하면.

그래서 내 Rails 응용 프로그램에서 사용되지 않는 응용 프로그램이없고 로그인을 시도한 또 다른 페이스 북 계정을 등록했습니다. '오류가 발생했습니다. 나중에 다시 시도하십시오.'라는 오류가 발생했습니다. CSRF "나는 대신 1.4.1 하나의 1.4.0 omniauth - 페이스 북의 보석을 사용하려고

할뿐만 아니라 오류 발생" "감지 must pass either a 코드를 ... 는"때문에 페이스 북-계정에서 사용자를 인증 할 수 없습니다 " parameter or a signed request (via signed_request parameter or a fbsr_XXX cookie) "

보석

oauth2 (0.8.0) 
omniauth (1.1.0) 
omniauth-oauth2 (1.1.0) 
omniauth-facebook (1.4.1) 
warden (1.2.1) 
devise (2.1.2) 

당신의 아이디어?

답변

7

나는이 문제도 가지고 있었고, 여전히 내 샌드위치 응용 프로그램에서 "샌드 박스"모드를 사용할 수 있음을 알게되었습니다. 이와 같은 소리도 문제가 될 수 있습니다.

그렇지 않은 경우 관련 로그 항목을 올리시겠습니까?

+0

이것도 도움이 될 수 있습니다 : http://stackoverflow.com/questions/11597130/omniauth-facebook-keeps-reporting-invalid-credentials – imgrgry

+0

감사합니다 :) 내 시간의 많은을 저장 :) –

1

은 나를 위해, 내 Omniauth 설정에 provider_ignores_state: true를 추가하는 데 필요한 :

config.omniauth :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_APP_SECRET'], { 
    strategy_class: OmniAuth::Strategies::Facebook, 
    provider_ignores_state: true 
} 

omniauth-facebook 보석 버전 1.6.0에 있습니다.

이미 다음이 설정 devise.rb에 있기 때문에 나는 'omniauth.rb'를 삭제 한 때이 문제를 해결 https://github.com/mkdynamic/omniauth-facebook/issues/73

0

에서 또한 더 많은 정보가있다 :

config.omniauth :facebook, ENV["FB_ID"], ENV["FB_SECRET"], 
    scope: 'email', 
    info_fields: 'email, first_name, last_name', 
    image_size: 'large', # 50x50, guaranteed ratio 
    secure_image_url: true 

하면 다시 시작 기억이 시험하기 위하여 끊으십시오.

관련 문제