def get_auth_token(apiKey, userid, password):
loginUrl = 'https://ivle.nus.edu.sg/api/login/?apikey=%s' % apiKey
data = urllib.request.urlopen(loginUrl).read()
if len(data) == 0:
raise InvalidAPIKeyException('API key is not valid.')
viewstate = re.search('__VIEWSTATE.+?value="(.+?)"', data)
if not viewstate:
# try setting viewstate to a hardcoded value if we fail trying to parse it
viewstate = '/wEPDwULLTEzODMyMDQxNjEPFgIeE1ZhbGlkYXRlUmVxdWVzdE1vZGUCARYCAgEPZBYEAgEPD2QWAh4Gb25ibHVyBQ91c2VySWRUb1VwcGVyKClkAgkPD2QWBB4Lb25tb3VzZW92ZXIFNWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2dpbmltZzEnKS5zcmM9b2ZmaW1nLnNyYzE7Hgpvbm1vdXNlb3V0BTRkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9naW5pbWcxJykuc3JjPW9uaW1nLnNyYzE7ZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQUJbG9naW5pbWcxYTg4Q/LO3lNCB13iJpTeINmF1JQmGv61ni1TVgDIOII='
else:
viewstate = viewstate.group(1)
params = urllib.parse.urlencode({'__VIEWSTATE': viewstate, 'userid': userid, 'password': password})
cj = CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
userToken = opener.open(loginUrl, params).read()
if 'Login fail' in userToken or '</html>' in userToken:
raise InvalidLoginException('Login credentials are not valid.')
return userToken
# Adds authentication parameters to parameter list
评论列表
文章目录