def execute_get(self, resource, **kwargs):
        url = '%s/%s' % (self.base_url, resource)
        headers = kwargs.pop('headers', dict())
        headers['Accept'] = 'application/json'
        headers['Content-Type'] = 'application/json'
        if kwargs:
            separator = '&' if '?' in url else '?'
            for key, value in kwargs.items():
                if hasattr(value, '__iter__') and type(value) not in six.string_types:
                    url = '%s%s%s=%s' % (url, separator, key, ','.join(value))
                else:
                    url = '%s%s%s=%s' % (url, separator, key, value)
                separator = '&'
        if self._access_token:
            headers['Authorization'] = 'Bearer %s' % self._access_token
        else:
            separator = '&' if '?' in url else '?'
            url = '%s%sclient_id=%s&client_secret=%s' % (
                url, separator, self._client_id, self._client_secret
            )
        response = requests.get(url, headers=headers)
        if response.status_code // 100 != 2:
            raise GhostException(response.status_code, response.json().get('errors', []))
        return response.json()