합작을 취소할 때 방향을 바꾸다

omniauth를 사용하여 제3자 로그인을 실현하면 각 제3자의 OAuth 화면(연합인증 화면)이 취소될 때 목표를 재정비하지 않으면 오류가 발생할 수 있습니다.따라서 미리 방향을 바꿔야 한다.
이번에는 페이스북을 예로 들어 소개한다.

컨디션

  • Ruby 2.3.1
  • Ruby on Rails 4.2.7.1
  • omniauth 1.9.1
  • omniauth-facebook 7.0.0
  • 잘못된 내용


    리디렉션 대상을 설정하지 않으면 오류가 발생합니다.
  • "Facebook을 통한 로그인"버튼
  • 을 누릅니다.
  • OAuth 화면(공동 인증 화면)에서 뒤로 또는 취소 버튼을 누릅니다.

  • 오류 발생
  • 오류 내용omniauth: (facebook) Authentication failure! invalid_credentials: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected
  • 해결책


    [config/initializers/omniauth.rb]에 주소 리셋 추가
    다음은 이전에 지정한 첫 페이지로 다시 지정합니다.
    Rails.application.config.middleware.use OmniAuth::Builder do
      ...
      on_failure do |env|
        Web::TopController.action(:index).call(env)
      end
    end
    
    이렇게 되면 아까 페이스북의 오옥스 화면(연합인증 화면)에서'나중에'또는'취소'버튼을 눌렀을 때 첫 페이지로 이동할 수 있다.
    이 설정은omniauth-facebook뿐만 아니라omniauth가 공유하는 설정이기 때문에 다른 제3자(트위터, Yahoo 등)가 인증을 취소할 때도 같은 방향을 바꿉니다.

    좋은 웹페이지 즐겨찾기