# File lib/omniauth/strategies/oauth.rb, line 44
      def callback_phase # rubocop:disable MethodLength
        fail(OmniAuth::NoSessionError, "Session Expired") if session["oauth"].nil?

        request_token = ::OAuth::RequestToken.new(consumer, session["oauth"][name.to_s].delete("request_token"), session["oauth"][name.to_s].delete("request_secret"))

        opts = {}
        if session["oauth"][name.to_s]["callback_confirmed"]
          opts[:oauth_verifier] = request["oauth_verifier"]
        else
          opts[:oauth_callback] = callback_url
        end

        @access_token = request_token.get_access_token(opts)
        super
      rescue ::Timeout::Error => e
        fail!(:timeout, e)
      rescue ::Net::HTTPFatalError, ::OpenSSL::SSL::SSLError => e
        fail!(:service_unavailable, e)
      rescue ::OAuth::Unauthorized => e
        fail!(:invalid_credentials, e)
      rescue ::OmniAuth::NoSessionError => e
        fail!(:session_expired, e)
      end