'Updates or creates :attr:`.user`.
:returns:
:class:`.User`'

def _update_or_create_user(self, data, credentials=None, content=None):

    if (not self.user):
        self.user = authomatic.core.User(self, credentials=credentials)
    self.user.content = content
    self.user.data = data
    for key in self.user.__dict__:
        if (key not in ('data', 'content')):
            value = data.get(key)
            if value:
                setattr(self.user, key, value)
    self.user = self._x_user_parser(self.user, data)
    if self.user.id:
        self.user.id = str(self.user.id)
    if (not self.user.name):
        if (self.user.first_name and self.user.last_name):
            self.user.name = '    '.join((self.user.first_name, self.user.last_name))
        else:
            self.user.name = (self.user.username or self.user.nickname or self.user.first_name or self.user.last_name)
    if (not self.user.location):
        if (self.user.city and self.user.country):
            self.user.location = '{0},    {1}'.format(self.user.city, self.user.country)
        else:
            self.user.location = (self.user.city or self.user.country)
    return self.user
