def authenticate!
      return unless @authenticated.nil?

      id, access_token = @params.retrieve_id, @params.retrieve_access_token
      @key_for_access_token = @scope.key_for_access_token(id, access_token)

      if access_token && !access_token.empty?
        ApiWarden.redis { |conn| @value_for_access_token = conn.get(@key_for_access_token) }
      end

      unless @value_for_access_token
        @authenticated = false
        raise AuthenticationError        
      end

      @authenticated = true
      @id = id
      @access_token = access_token
      self
    end
def authenticate!
      return unless @authenticated.nil?

      id, access_token = @params.retrieve_id, @params.retrieve_access_token
      @key_for_access_token = @scope.key_for_access_token(id, access_token)

      if access_token && !access_token.empty?
        ApiWarden.redis { |conn| @value_for_access_token = conn.get(@key_for_access_token) }
      end

      unless @value_for_access_token
        @authenticated = false
        raise AuthenticationError        
      end

      @authenticated = true
      @id = id
      @access_token = access_token
      self
    end
This method will only authenticate once, and cache the result.

 @return self