'Completes loging process, must return user instance'

def auth_complete(self, *args, **kwargs):

    self.process_error(self.data)
    params = self.auth_complete_params(self.validate_state())
    request = Request(self.ACCESS_TOKEN_URL, data=urlencode(params), headers=self.auth_headers())
    try:
        response = json.loads(dsa_urlopen(request).read())
    except HTTPError as e:
        if (e.code == 400):
            raise AuthCanceled(self)
        else:
            raise
    except (ValueError, KeyError):
        raise AuthUnknownError(self)
    self.process_error(response)
    return self.do_auth(response['access_token'], response=response, *args, **kwargs)
