public function login($strategy, array $credentials = [], $expiresIn = '', array $options = [])
    {
        $body = $credentials;

        if (empty($strategy)) {
            throw new InvalidArgumentException('Unable to login: no strategy specified');
        }

        if (!array_key_exists('httpParams', $options)) {
            $options['httpParams'] = [];
        }

        if (!array_key_exists(':strategy', $options['httpParams'])) {
            $options['httpParams'][':strategy'] = $strategy;
        }

        if (!empty($expiresIn)) {
            $options['query_parameters']['expiresIn'] = $expiresIn;
        }

        $response = $this->query(
            $this->buildQueryArgs('auth', 'login'),
            [
                'body' => $body
            ],
            $options
        );

        if ($response['result']['jwt']) {
            $this->jwtToken = $response['result']['jwt'];
        }

        return $response['result'];
    }