'Authenticate user using social credentials
Authentication is made if this is the correct backend, backend
verification is made by kwargs inspection for current backend
name presence.'

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

    if (not (self.name and kwargs.get(self.name) and ('response' in kwargs))):
        return None
    response = kwargs.get('response')
    pipeline = PIPELINE
    kwargs = kwargs.copy()
    kwargs['backend'] = self
    if ('pipeline_index' in kwargs):
        pipeline = pipeline[kwargs['pipeline_index']:]
    else:
        kwargs['details'] = self.get_user_details(response)
        kwargs['uid'] = self.get_user_id(kwargs['details'], response)
        kwargs['is_new'] = False
    out = self.pipeline(pipeline, *args, **kwargs)
    if (not isinstance(out, dict)):
        return out
    social_user = out.get('social_user')
    if social_user:
        user = social_user.user
        user.social_user = social_user
        user.is_new = out.get('is_new')
        return user
