Skip to content

Commit

Permalink
Add oauth login functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
melvyn2 committed Sep 22, 2019
1 parent 09f4f51 commit f96e278
Showing 1 changed file with 53 additions and 1 deletion.
54 changes: 53 additions & 1 deletion steam/webauth.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,14 @@
import six
import requests

from steam import webapi
from steam.steamid import SteamID
from steam.util.web import make_requests_session, generate_session_id
from steam.core.crypto import rsa_publickey, pkcs1v15_encrypt

if six.PY2:
# noinspection PyUnresolvedReferences
intBase = long
# noinspection PyUnresolvedReferences
_cli_input = raw_input
else:
intBase = int
Expand Down Expand Up @@ -325,6 +326,57 @@ def _finalize_login(self, login_response):
self.steam_id = SteamID(data['steamid'])
self.oauth_token = data['oauth_token']

def oauth_login(self, oauth_token='', steam_id='', language='english'):
if oauth_token:
self.oauth_token = oauth_token
else:
if self.oauth_token:
oauth_token = self.oauth_token
else:
raise LoginIncorrect('token is not specified')

if steam_id:
self.steam_id = SteamID(steam_id)
else:
if not self.steam_id:
raise LoginIncorrect('steam_id is not specified')

steam_id = self.steam_id.as_64

data = {
'access_token': oauth_token
}

try:
resp = self.session.post('https://api.steampowered.com/IMobileAuthService/GetWGToken/v0001', data=data)
except requests.exceptions.RequestException as e:
raise HTTPError(str(e))

try:
resp_data = resp.json()['response']
except json.decoder.JSONDecodeError as e:
if 'Please verify your <pre>key=</pre> parameter.' in resp.text:
raise LoginIncorrect('invalid token')
else:
raise WebAuthException('failed to decode response')

self.session_id = generate_session_id()

for domain in ['store.steampowered.com', 'help.steampowered.com', 'steamcommunity.com']:
self.session.cookies.set('steamid', steam_id, domain=domain)
self.session.cookies.set('birthtime', '-3333', domain=domain)
self.session.cookies.set('sessionid', self.session_id, domain=domain)
self.session.cookies.set('mobileClientVersion', '0 (2.1.3)', domain=domain)
self.session.cookies.set('mobileClient', 'android', domain=domain)
self.session.cookies.set('steamLogin', str(steam_id) + "%7C%7C" + resp_data['token'], domain=domain)
self.session.cookies.set('steamLoginSecure', str(steam_id) + "%7C%7C" + resp_data['token_secure'],
domain=domain, secure=True)
self.session.cookies.set('Steam_Language', language, domain=domain)

self.logged_on = True

return self.session


class WebAuthException(Exception):
pass
Expand Down

0 comments on commit f96e278

Please sign in to comment.