'Return access_token and extra defined names to store in
extra_data field'

@classmethod
def extra_data(cls, user, uid, response, details=None):

    data = {'access_token': response.get('access_token', '')}
    name = cls.name.replace('-', '_').upper()
    names = ((cls.EXTRA_DATA or []) + setting((name + '_EXTRA_DATA'), []))
    for entry in names:
        if isinstance(entry, six.string_types):
            entry = (entry,)
        try:
            if (len(entry) == 3):
                (name, alias, discard) = entry
            elif (len(entry) == 2):
                ((name, alias), discard) = (entry, False)
            elif (len(entry) == 1):
                ((name,), (alias,), discard) = (entry, entry, False)
            else:
                raise ValueError(('invalid    tuple    for    EXTRA_DATA    entry' % entry))
            value = response.get(name)
            if (discard and (not value)):
                continue
            data[alias] = value
        except (TypeError, ValueError):
            raise BackendError(('invalid    entry:    %s' % (entry,)))
    return data
