'Login to your Google Account. You must provide either:
- an email and password
- a valid Google authSubToken'

def login(self, email=None, password=None, authSubToken=None):

    if (authSubToken is not None):
        self.setAuthSubToken(authSubToken)
    else:
        if ((email is None) or (password is None)):
            raise Exception('You    should    provide    at    least    authSubToken    or    (email    and    password)')
        params = {'Email': email, 'Passwd': password, 'service': self.SERVICE, 'accountType': self.ACCOUNT_TYPE_HOSTED_OR_GOOGLE, 'has_permission': '1', 'source': 'android', 'androidId': self.androidId, 'app': 'com.android.vending', 'device_country': 'fr', 'operatorCountry': 'fr', 'lang': 'fr', 'sdk_version': '16'}
        headers = {'Accept-Encoding': ''}
        response = requests.post(self.URL_LOGIN, data=params, headers=headers, verify=False)
        data = response.text.split()
        params = {}
        for d in data:
            if (not ('=' in d)):
                continue
            (k, v) = d.split('=')
            params[k.strip().lower()] = v.strip()
        if ('auth' in params):
            self.setAuthSubToken(params['auth'])
        elif ('error' in params):
            raise LoginError(('server    says:    ' + params['error']))
        else:
            raise LoginError('Auth    token    not    found.')
