Skip to content

Commit 3389f41

Browse files
committed
Add oauth login functionality
1 parent 92c5107 commit 3389f41

1 file changed

Lines changed: 51 additions & 1 deletion

File tree

steam/webauth.py

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@
6161
import six
6262
import requests
6363

64-
from steam import webapi
6564
from steam.steamid import SteamID
6665
from steam.utils.web import make_requests_session, generate_session_id
6766
from steam.core.crypto import rsa_publickey, pkcs1v15_encrypt
@@ -323,6 +322,57 @@ def _finalize_login(self, login_response):
323322
self.steam_id = SteamID(data['steamid'])
324323
self.oauth_token = data['oauth_token']
325324

325+
def oauth_login(self, oauth_token='', steam_id='', language='english'):
326+
if oauth_token:
327+
self.oauth_token = oauth_token
328+
else:
329+
if self.oauth_token:
330+
oauth_token = self.oauth_token
331+
else:
332+
raise LoginIncorrect('token is not specified')
333+
334+
if steam_id:
335+
self.steam_id = SteamID(steam_id)
336+
else:
337+
if not self.steam_id:
338+
raise LoginIncorrect('steam_id is not specified')
339+
340+
steam_id = self.steam_id.as_64
341+
342+
data = {
343+
'access_token': oauth_token
344+
}
345+
346+
try:
347+
resp = self.session.post('https://api.steampowered.com/IMobileAuthService/GetWGToken/v0001', data=data)
348+
except requests.exceptions.RequestException as e:
349+
raise HTTPError(str(e))
350+
351+
try:
352+
resp_data = resp.json()['response']
353+
except json.decoder.JSONDecodeError as e:
354+
if 'Please verify your <pre>key=</pre> parameter.' in resp.text:
355+
raise LoginIncorrect('invalid token')
356+
else:
357+
raise WebAuthException('failed to decode response')
358+
359+
self.session_id = generate_session_id()
360+
361+
for domain in ['store.steampowered.com', 'help.steampowered.com', 'steamcommunity.com']:
362+
self.session.cookies.set('steamid', steam_id, domain=domain)
363+
self.session.cookies.set('birthtime', '-3333', domain=domain)
364+
self.session.cookies.set('sessionid', self.session_id, domain=domain)
365+
self.session.cookies.set('mobileClientVersion', '0 (2.1.3)', domain=domain)
366+
self.session.cookies.set('mobileClient', 'android', domain=domain)
367+
self.session.cookies.set('steamLogin', str(steam_id) + "%7C%7C" + resp_data['token'], domain=domain)
368+
self.session.cookies.set('steamLoginSecure', str(steam_id) + "%7C%7C" + resp_data['token_secure'],
369+
domain=domain, secure=True)
370+
self.session.cookies.set('Steam_Language', language, domain=domain)
371+
372+
self.logged_on = True
373+
374+
return self.session
375+
326376

327377
class WebAuthException(Exception):
328378
pass

0 commit comments

Comments
 (0)