def METHOD_NAME(self, uri, scope=None, **kwargs):
    if not is_secure_transport(uri):
        raise InsecureTransportError()
    scope = self.scope if scope is None else scope
    params = [(('client_id', self.client_id)), (('grant_type', self.grant_type))]
    if self.client_secret is not None:
        params.append(('client_secret', self.client_secret))
    if scope:
        params.append(('scope', list_to_scope(scope)))
    for k in kwargs:
        if kwargs[k]:
            params.append((str(k), kwargs[k]))
    return add_params_to_uri(uri, params)